如何使用cron运行rake任务,每次运行之间有时间差?

时间:2011-03-15 08:29:35

标签: ruby-on-rails cron

是否有某种方法可以在每次从头到尾完成佣金任务之间有2分钟的差距?

例如:

1:00 PM: Run a rake task
         Task will usually take 30 seconds to complete, but could take 5 minutes.
         The task took 3 minutes to complete in this first run.
1:02 PM: cron has been scheduled to run task every 2 minutes but the previous 
         task has not completed yet, so cron should not run this task right now
1:03 PM: task has completed
         cron should wait 2 minutes
1:05 PM  cron should re-run the task

3 个答案:

答案 0 :(得分:1)

您可以使用无限循环(ruby程序)来运行rake任务,而不是使用cron-tab。 完成任务后,只需使用睡眠方法将其停止2分钟。 并且有一个救援区块,如果发生任何错误,它将再次运行你的rake任务。

答案 1 :(得分:1)

查看delayed_jobs或resque-scheduler gems。

答案 2 :(得分:0)

我建议让任务的结束在其运行结束时重新安排。

修改

虽然我对cron的(有限)经验源于10多年前,但我认为如果cron仍在运行,你可以让cron不重启工作吗? 因此,您可以保持“每x分钟,但如果它仍然在运行”的日程安排,但最后任务将作业重置为“y分钟后”。

然后,如果任务碰巧无法重新安排,那么cron的正常设施无论如何都会“很快”重启。