是否有某种方法可以在每次从头到尾完成佣金任务之间有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
答案 0 :(得分:1)
您可以使用无限循环(ruby程序)来运行rake任务,而不是使用cron-tab。 完成任务后,只需使用睡眠方法将其停止2分钟。 并且有一个救援区块,如果发生任何错误,它将再次运行你的rake任务。
答案 1 :(得分:1)
查看delayed_jobs或resque-scheduler gems。
答案 2 :(得分:0)
我建议让任务的结束在其运行结束时重新安排。
修改强>
虽然我对cron的(有限)经验源于10多年前,但我认为如果cron仍在运行,你可以让cron不重启工作吗? 因此,您可以保持“每x分钟,但如果它仍然在运行”的日程安排,但最后任务将作业重置为“y分钟后”。
然后,如果任务碰巧无法重新安排,那么cron的正常设施无论如何都会“很快”重启。