sidekiq:Ruby 高效后台任务处理,多线程并发,支持 Redis 替代方案

Simple, efficient background processing for Ruby

分支24Tags220
文件最后提交记录最后更新时间
2 个月前
7 个月前
19 天前
4 个月前
3 个月前
19 天前
5 个月前
19 天前
27 天前
1 年前
6 个月前
1 年前
4 年前
6 个月前
13 天前
3 个月前
5 个月前
4 年前
1 个月前
28 天前
5 个月前
28 天前

Sidekiq

Gem 版本 构建状态 Ruby 用户论坛

为 Ruby 打造的简单高效的后台任务处理工具。

Sidekiq 采用线程机制,可在同一进程内同时处理多个任务。任何 Ruby 应用都能使用 Sidekiq。

环境要求

  • Redis:Redis 7.0+、Valkey 7.2+ 或 Dragonfly 1.27+
  • Ruby:MRI 3.2+ 或 JRuby 9.4+。

Sidekiq 8.0 支持 Rails 和 Active Job 7.0+。

Sidekiq 支持 ValkeyDragonfly 作为 Redis 的替代方案。Redis 7.2.4 被视为标准实现,任何与此版本的不兼容性均视为 Bug。

安装步骤

bundle add sidekiq

快速入门

请参阅 入门维基页面 并按照简单的设置流程操作。您可以观看 此 YouTube 播放列表 来全面了解 Sidekiq,并直观感受其各项功能。以下是 Web 界面截图:

Web 界面

性能表现

bin/sidekiqload 中的基准测试会创建 500,000 个空操作任务,并在假设 Redis 网络延迟固定为 1ms 的情况下尽快处理它们。这需要大量的 Redis 网络 I/O 和 JSON 解析操作。由于此基准测试受 I/O 限制,因此我们将并发数提高到 25。如果您的应用需要发送大量电子邮件或执行其他网络密集型工作,可能会获得类似的性能提升,但请注意不要使 CPU 饱和。实际应用中,并发数很少需要超过 10。

版本 处理 500k 任务所需时间 吞吐量(任务/秒) Ruby 版本 并发数 任务类型
Sidekiq 7.0.3 21.3 秒 23,500 3.2.0+yjit 30 Sidekiq::Job
Sidekiq 7.0.3 33.8 秒 14,700 3.2.0+yjit 30 ActiveJob 7.0.4
Sidekiq 7.0.3 23.5 秒 21,300 3.2.0 30 Sidekiq::Job
Sidekiq 7.0.3 46.5 秒 10,700 3.2.0 30 ActiveJob 7.0.4
Sidekiq 7.0.3 23.0 秒 21,700 2.7.5 30 Sidekiq::Job
Sidekiq 7.0.3 46.5 秒 10,850 2.7.5 30 ActiveJob 7.0.4

Sidekiq 的大部分性能开销来自 Redis 网络 I/O。ActiveJob 由于参数反序列化和回调机制,会增加显著的 CPU 开销。经过实验确定,并发数设为 30 时可在不使单个 CPU 饱和的情况下实现性能最大化。

想要升级?

使用 bundle up sidekiq 命令来升级 Sidekiq 及其所有依赖项。 各主要版本之间的升级说明可在 docs/ 目录中找到。

我还销售 Sidekiq ProSidekiq Enterprise,它们是 Sidekiq 的扩展,提供了更多功能、商业友好的许可证,同时让您能够支持高质量的开源开发。更多详情请参见 Sidekiq 官网。

遇到问题?

请勿直接向任何 Sidekiq 提交者发送电子邮件询问问题。 公开讨论才能最好地服务于社区。

如果您遇到问题,请先查阅 FAQ故障排除 维基页面。 在 issues 中搜索您的问题也是个好办法。

Sidekiq Pro 和 Sidekiq Enterprise 客户可获得私人电子邮件支持。 您可以在 https://sidekiq.org 购买;如需帮助,请发送电子邮件至 support@contribsys.com

有用的资源:

每周四上午是 Sidekiq 在线答疑时间:我会通过视频聊天回答问题。 详情请参见 Sidekiq 支持页面

贡献代码

参见 贡献指南

使用 HERB 进行 ERB 代码检查

本项目使用 HERB 进行 ERB 文件的代码检查和格式化。所有 ERB 文件已重命名为使用 .html.erb 扩展名,以获得更好的工具支持。

本地开发:

# Run HERB linting
bundle exec rake lint:herb
# or
bin/lint-herb

CI 集成: HERB 代码检查会在 CI 中自动运行,以确保所有 ERB 文件格式正确且无解析错误。

许可证

有关许可详情,请参见 LICENSE.txt。 Sidekiq Pro 和 Sidekiq Enterprise 的许可证可在 COMM-LICENSE.txt 中找到。

作者

Mike Perham,mastodonhttps://www.mikeperham.com / https://www.contribsys.com

项目介绍

Ruby的简洁高效后台处理【此简介由AI生成】

定制我的领域
20313.56 K2.48 K访问 GitHub