最佳当前rails后台任务方法?

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

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

只是试图从无数的选项中找出最好的方法。

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

为此,您要么寻找resque或delayed_job 。 两者都支持将来某个时刻的调度任务 – delayed_job本身就是这样做的,而resque有一个名为resque_scheduler的插件。

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

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

我最近了解了Sidekiq ,我觉得它真的很棒。

还有一个关于它的RailsCast – Sidekiq 。

无论何时访问https://github.com/javan/whenever,请查看gem。

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

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

编辑:看看gem delayed_job ,它有利于在后台执行长任务。 创建cron作业时仅用于启动其他任务很有用。