我正在設計一個長時間運行的進程,由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