我试图找出在后台运行脚本的最佳方法。我一直在四处寻找并找到了很多选择,但在过去的几年里,很多/大多数似乎已经变得不活跃。让我来描述一下我的需求。
rails app基本上是一个前端,用于配置何时以及如何运行这些脚本。脚本运行并生成报告并发送电子邮件警报。因此,用户必须能够配置启动时间以及这些脚本动态运行的频率。脚本本身应该可以访问rails环境,以便将生成的报告保存在DB中。
试图从无数选项中找出最佳方法。
答案 0 :(得分:12)
我认为你正在寻找一个后台工作排队系统。
为此,您要么寻找resque或delayed_job。两者都支持将来某个时刻的调度任务 - delayed_job本地执行此操作,而resque有一个名为resque_scheduler的插件。
您可以使用您指定的参数在后台排队作业,然后在您选择时将执行这些作业。您可以将作业设置为无限期或固定次数(至少使用resque-scheduler,不确定delayed_job)。
delayed_job更容易设置,因为它可以保存数据库中的所有内容。 resque更强大,但要求你在堆栈中使用redis - 但是如果你已经使用了它,那么它几乎是你问题的理想解决方案。
答案 1 :(得分:12)
答案 2 :(得分:6)
在https://github.com/javan/whenever处查看gem。
它允许您安排cron作业等任务。
在linux下工作得很好,最后一次提交是14天前。我的一个朋友在一个项目中使用它并对它非常满意。
编辑:看一下gem delayed_job,它适合在后台执行长任务。在创建cron作业时非常有用,只能启动其他任务。