我打算使用whenever gem,除此之外还会运行微小的佣金任务。如果我的rake任务需要超过一分钟,那么根据gem的输出,看起来rake任务的第二个实例将启动,即使第一个没有完成。
每当宝石在开始第二次任务之前等待完成任务时,是否会等待?
如果没有,那么解决方法是什么。我相信这个问题在serverfault中更好用,我还是把它放在这里。
答案 0 :(得分:1)
每当只是写cronjobs,并且不会阻止他们超越自己。这是正在运行的任务的工作。
使用PID文件或文件系统锁来防止任务在其顶部运行。
答案 1 :(得分:0)
在我的预定应用程序中,我扫描进程列表,查找在命令行上使用相同配置文件运行的应用程序的其他实例 - 如果进程已在使用相同的配置文件运行,则退出并记录备注。 / p>
这使程序不会踩到自己......
当进程退出但锁文件仍然存在时,PID文件或某种类型的“锁定”文件很容易出现问题。