我衷心推荐sidekiq——它非常灵活,而且它使用的资源比Resque 或DelayedJob 少得多。
它确实需要 redis(如 Resque),但 redis 对任何 Rails 项目都是有价值的补充,因为它可以用作会话存储和缓存。我们的主要数据库是 MySQL,我们部署到 EC2 :-) 我们过去曾使用延迟作业和救援,但发现它们存在问题并且占用大量资源。Sidekiq 使用线程,单个 sidekiq 工作人员与多个 DJ/Resque 工作人员一样高效。这是我可以证实的项目 README 中一个有趣的部分:
您会发现您可能需要 50 个 200MB resque 进程来固定您的 CPU,而一个 300MB Sidekiq 进程将固定相同的 CPU 并执行相同数量的工作。请参阅我关于 Resque 的内存效率的博客文章,以及我如何能够将 Carbon Five 客户的 resque 处理场从 9 台机器缩小到 1 台机器。
总结一下:
- 它适用于 MySQL - 不是真的,但它也没有 MySQL 的问题
- 您可以通过设置不同的处理队列来确定优先级
- 您可以轻松安排任何事情(特别是对电子邮件的特殊 ala DJ 支持)
- 不太确定,我们使用when + cron 进行重复性工作
- 你会喜欢 Sidekiq 的小内存占用