在Rails应用程序中运行异步作业的最佳方法是什么?

Ott*_*tto 15 asynchronous ruby-on-rails

我知道有几个插件可以进行异步处理.哪一个是最好的,为什么?

我所知道的是:

Cam*_*oth 9

我将把DJ(延迟工作)添加到列表中 - http://blog.leetsoft.com/2008/2/17/delayed-job-dj

github的家伙最近给了它一个很好的评论:http://github.com/blog/197-the-new-queue


Rém*_*émi 8

如果你可能有几个这样的过程,并且想要排队它们,那么starling和workling看起来很有趣(参见截屏视频).

您可能也会对之前使用rake进行后台处理的截屏视频感兴趣,而对未来可能会讨论同一问题的另一个解决方案感兴趣.


Oll*_*lly 7

某些东西是否是"最佳"解决方案,实际上取决于您试图解决的问题.在某些情况下,最好的解决方案将是最轻量级的解决方案,在其他最重量级的解决方案中.

BackgroundRb可能是功能最全的Rails后台作业处理器,但它也是最复杂的,因此需要更多的投资才能掌握它.BackgroundRb可以处理大多数用例,从简单到复杂.

我听说过Ara T. Howard的背景工作(Bj)的非常好的事情,引用自述文件是Rails的脑死亡简单的零管理后台优先级队列.这是一个更轻量级的解决方案,因此对于大多数情况而言可能优于BackgroundRb.

如果你想要的只是一个不经常的离线批处理式处理的解决方案,那么script/runner所有Rails应用程序附带的解决方案就足够了.

对于进一步的阅读,你可能想看看HowToRunBackgroundJobsInRailsRails的维基.