2008-12-23 29 views
12

为Rails应用程序创建后台任务的首选方式是什么?我听说过Starling/Workling和好的剧本/跑步者,但我很好奇这是否成为事实上管理这种需求的方式?在Rails中旋转后台任务

谢谢!

澄清:我喜欢背景中的耙子的想法,但问题是,我需要持续运行或每10个小时运行一次。我不会奢望坐在网络请求上,它需要由服务器启动,与我网站上发生的活动异步。

回答

21

瑞恩·贝茨创造了三个伟大的截屏可能真正帮助你:他谈到的各种优点和缺点使用每一个

  1. Rake in Background
  2. Starling and Workling
  3. Custom Daemon

。这应该有助于你开始。

+0

+1对于八哥。 当前正在生产中使用它。它足够快速,可靠,并且代码基数非常小,您可以在几分钟内轻松理解它。 – Michael 2008-12-23 03:08:54

0

虽然我不知道它是否成为标准,但我已经与BackgroundRB取得了巨大成功。我有几个工作人员,其中一些是由用户操作触发的长时间运行的任务,而另一些是按照时间表启动的。

1

async_observer是最好的。它不会做各种愚蠢的忙碌的等待事物,或者失去像椋鸟,没有数据库轮询等工作人员崩溃的工作......并且它非常好地集成到导轨中。

我推通过它的工作,它几乎不在乎。

5

这取决于您的需求。

试用delayed_job,它由Shopify创始人Tobi维护,并由DHH分叉。

3

我通常依靠cronjob scheduling,因为它提供了灵活性,无需编写单独的代码来安排它。任何可以从shell执行的东西都可以预定!无论是任何脚本(ruby/rake task/py/bash /任何其他你喜欢的),cronjob调度都可以轻松实现。

如果在Windows上运行,可以使用scheduled tasks

希望这有助于。

1

已经提到的大多数插件都可以完成这项工作,但是如果您只需要一个Rake任务就可以按照设定的时间表运行,那么实际上并不需要开始投入更多的体系结构。

只需添加一个cron作业,其执行

“CD /路径/到/导轨/应用; RAILS_ENV =生产耙运行:我:任务”

为什么另起炉灶,在类Unix操作系统几十年来一直在按计划运行任务?

0

看看Taskr。它基本上像cron一样,但是具有REST风格的Web界面。您可以使用它来安排任务以定期连接到您的Rails应用程序并触发任意代码(通过Taskr4rails插件)。它意味着很好地适合于围绕RESTful服务构建的系统,此外它还可以在任务返回错误,无法运行等情况下通知您。