Simple, efficient background processing for Ruby
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 7 个月前 | ||
| 19 天前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 19 天前 | ||
| 5 个月前 | ||
| 19 天前 | ||
| 27 天前 | ||
| 1 年前 | ||
| 6 个月前 | ||
| 1 年前 | ||
| 4 年前 | ||
| 6 个月前 | ||
| 13 天前 | ||
| 3 个月前 | ||
| 5 个月前 | ||
| 4 年前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 5 个月前 | ||
| 28 天前 |
Sidekiq
为 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 支持 Valkey 和 Dragonfly 作为 Redis 的替代方案。Redis 7.2.4 被视为标准实现,任何与此版本的不兼容性均视为 Bug。
安装步骤
bundle add sidekiq
快速入门
请参阅 入门维基页面 并按照简单的设置流程操作。您可以观看 此 YouTube 播放列表 来全面了解 Sidekiq,并直观感受其各项功能。以下是 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 Pro 和 Sidekiq Enterprise,它们是 Sidekiq 的扩展,提供了更多功能、商业友好的许可证,同时让您能够支持高质量的开源开发。更多详情请参见 Sidekiq 官网。
遇到问题?
请勿直接向任何 Sidekiq 提交者发送电子邮件询问问题。 公开讨论才能最好地服务于社区。
如果您遇到问题,请先查阅 FAQ 和 故障排除 维基页面。 在 issues 中搜索您的问题也是个好办法。
Sidekiq Pro 和 Sidekiq Enterprise 客户可获得私人电子邮件支持。 您可以在 https://sidekiq.org 购买;如需帮助,请发送电子邮件至 support@contribsys.com。
有用的资源:
- 产品文档位于 维基。
- 偶尔会在 @sidekiq Mastodon 账号上发布公告。
- Stack Overflow 上的 Sidekiq 标签 有许多有用的问答。
- 欢迎加入 Ruby Users Forum 上的
sidekiq标签讨论。
每周四上午是 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,mastodon,https://www.mikeperham.com / https://www.contribsys.com