我正在设计一个长时间运行的进程,由Django管理命令触发,需要在相当频繁的基础上运行。这个过程应该每5分钟通过一个cron作业来运行,但是我想阻止它在第一个需要5分钟以上的罕见情况下运行第二个过程实例。防止管理命令一次运行多个
我想过创建一个触摸文件,在管理进程启动时创建并在进程结束时删除。然后,第二个管理命令过程将在运行之前检查以确保触摸文件不存在。但是,如果某个进程在没有正确删除触摸文件的情况下突然死亡,那看起来就像是个问题。似乎有一个更好的方法来做这个检查。
有没有人知道有什么好的工具或模式来帮助解决这类问题?
ps -ef怎么样? (或[PSI](http://www.psychofx.com/psi/)) – danihp 2012-01-03 21:13:10
FWIW,触摸文件方法的简单修复方法是在每次迭代或步骤中继续触摸文件。然后,您可以检查文件的修改日期(如果存在),并在合理的时间内未修改文件时忽略/删除它。 – 2012-01-03 22:52:34
谢谢克里斯。这似乎是一个不错的轻量级方法。 – 2012-01-03 23:38:03