【发布时间】:2012-01-03 21:09:40
【问题描述】:
我正在设计一个由 Django 管理命令触发的长时间运行的进程,该进程需要相当频繁地运行。这个进程应该通过一个 cron 作业每 5 分钟运行一次,但我想阻止它在第一个需要超过 5 分钟的极少数情况下运行该进程的第二个实例。
我考虑过创建一个在管理流程开始时创建并在流程结束时删除的触摸文件。然后,第二个管理命令进程将检查以确保触摸文件在运行之前不存在。但是,如果一个进程在没有正确删除触摸文件的情况下突然死亡,这似乎是一个问题。似乎必须有更好的方法来进行检查。
有没有人知道任何好的工具或模式来帮助解决这类问题?
【问题讨论】:
-
ps -ef 怎么样? (或PSI)
-
FWIW,触摸文件方法的一个简单修复方法是在过程中的每个迭代或步骤中继续触摸文件。然后,您可以检查文件的修改日期(如果存在),如果在合理的时间内没有被修改,则忽略/删除它。
-
谢谢克里斯。这似乎是一种不错的轻量级方法。