答案 0 :(得分:9)
我会将DJ(延迟工作)添加到列表中 - http://blog.leetsoft.com/2008/2/17/delayed-job-dj
github的家伙最近给了一个很棒的评论:http://github.com/blog/197-the-new-queue
答案 1 :(得分:8)
您可能也会对使用rake进行后台处理的previous screencast以及将来可能会针对同一问题的另一个解决方案感兴趣。
答案 2 :(得分:7)
某些东西是否是“最佳”解决方案,实际上取决于您要解决的问题。在某些情况下,最好的解决方案将是最轻量级的解决方案,在其他最重量级的解决方案中。
BackgroundRb可能是功能最齐全的Rails后台作业处理器,但它也是最复杂的,因此需要更多投资才能掌握它。 BackgroundRb可以处理大多数用例,从简单到复杂。
我听说过Ara T. Howard的Background Job(Bj)非常好的事情,引用自述文件是一个脑死亡的简单零管理员背景优先级队列Rails 。这是一个更轻量级的解决方案,因此对于大多数情况而言可能比BackgroundRb更可取。
如果你想要的只是一个不经常的离线批处理式处理的解决方案,那么所有Rails应用程序附带的script/runner
就足够了。
如需进一步阅读,您可能需要查看HowToRunBackgroundJobsInRails中的Rails Wiki。
答案 3 :(得分:4)
Resque也可以帮到你。
这是一个非常好的工具,用于创建后台作业,将这些作业放在多个队列中,并在以后处理它们。
Github的家伙创造并使用它。
以下文章可以帮助您入门:
答案 4 :(得分:3)
BackgrounDRb - 优点:全功能,消息传递,缺点:线程化(eek - Rails不是线程安全的!),复杂
Daemon Generator - 优点:简单,运行工作,就是这样!,缺点:没有那些奇特的消息传递。
答案 5 :(得分:3)
Starling + Workling插件很简单。此外,它使用简单,经过测试和可扩展的Memcached。
答案 6 :(得分:1)
我们使用Cron。易于设置,易于维护,始终有效。
BackgroundRb会吃掉你的大脑。
答案 7 :(得分:0)
BackgrounDRb没有线程,它完全基于进程。它只有一个用户可以使用的线程池功能,如果他想同时处理IO绑定任务。
尝试1.1版本,让我(在我的博客上)或邮件列表上了解任何问题。