最好的当前rails后台任务方法?

时间:2012-03-13 22:58:09

标签: ruby-on-rails

我试图找出在后台运行脚本的最佳方法。我一直在四处寻找并找到了很多选择,但在过去的几年里,很多/大多数似乎已经变得不活跃。让我来描述一下我的需求。

rails app基本上是一个前端,用于配置何时以及如何运行这些脚本。脚本运行并生成报告并发送电子邮件警报。因此,用户必须能够配置启动时间以及这些脚本动态运行的频率。脚本本身应该可以访问rails环境,以便将生成的报告保存在DB中。

试图从无数选项中找出最佳方法。

3 个答案:

答案 0 :(得分:12)

我认为你正在寻找一个后台工作排队系统。

为此,您要么寻找resquedelayed_job。两者都支持将来某个时刻的调度任务 - delayed_job本地执行此操作,而resque有一个名为resque_scheduler的插件。

您可以使用您指定的参数在后台排队作业,然后在您选择时将执行这些作业。您可以将作业设置为无限期或固定次数(至少使用resque-scheduler,不确定delayed_job)。

delayed_job更容易设置,因为它可以保存数据库中的所有内容。 resque更强大,但要求你在堆栈中使用redis - 但是如果你已经使用了它,那么它几乎是你问题的理想解决方案。

答案 1 :(得分:12)

我最近了解了Sidekiq,我认为这真的很棒。

还有一个关于它的RailsCast - Sidekiq

答案 2 :(得分:6)

https://github.com/javan/whenever处查看gem。

它允许您安排cron作业等任务。

在linux下工作得很好,最后一次提交是14天前。我的一个朋友在一个项目中使用它并对它非常满意。

编辑:看一下gem delayed_job,它适合在后台执行长任务。在创建cron作业时非常有用,只能启动其他任务。