良好的后台处理选项

时间:2012-10-10 07:09:27

标签: ruby-on-rails ruby ruby-on-rails-3.2 background-process

我正在寻找具有以下能力的优秀后台作业处理器,

  1. 适用于MySql
  2. 可以优先考虑
  3. 可以轻松地在后台安排任何内容(不仅仅是电子邮件)
  4. 完成后重新初始化作业的能力(回调会很好。我几乎没有任务/作业在每分钟后继续运行),即使是重复的调度程序也能正常工作
  5. 不应该吃掉很多记忆,(有DJ的经验)
  6. 我正在研究Resque,DJ,Beanstalkd的几个选项(尚未完全探索) 我在Amazon EC2中拥有我的生产环境(如果这有助于更好的解决方案)

    请建议我哪个是一个不错的选择,除了这些以外人们现在使用的东西还有吗?

1 个答案:

答案 0 :(得分:4)

我衷心推荐sidekiq - 它非常灵活,它使用的资源远少于Resque或DelayedJob。

它确实需要redis(如Resque),但redis对任何Rails项目都是有价值的补充,因为它可以作为会话存储和缓存重用。我们的主要数据库是MySQL,我们部署到EC2 :-)我们过去曾使用过延迟的工作和救援,但发现他们使用的资源有问题且很重。 Sidekiq使用线程和单个sidekiq工作者与几个DJ / Resque工作者一样高效。这是项目自述文件的一个有趣部分,我可以证实:

  

你会发现你可能需要50个200MB的重新启动流程来挂钩你的   CPU,而一个300MB的Sidekiq进程将挂起相同的CPU和   执行相同数量的工作。请参阅我在Resque上发表的博客文章   内存效率以及我如何缩小Carbon Five客户端的能力   将农场从9台机器恢复到1台机器。

总结一下:

  1. 它适用于MySQL - 不是真的,但它没有MySQL的问题
  2. 您可以通过设置不同的processing queues
  3. 来获得优先级
  4. 您可以轻松schedule anything(特别是DJ support for e-mails
  5. 不太确定,我们每当+ cron用于重复性工作
  6. 你会喜欢Sidekiq的小内存