1
我有這個Django cron作業腳本(我使用的是kronos,這很棒)。防止多次執行
由於我每分鐘觸發一次這個工作,我想確保沒有另一個腳本實例已經運行。如果有以前的作業正在運行,那麼我想跳過當前的執行。
我知道我能做到這一點與鎖文件,但是這並不是非常可靠的,當你在執行(你必須清除鎖定文件)的中間重新啓動可能會造成問題,等
什麼使用Python(在這種情況下,Django)做到這一點的最好方法是什麼?
編輯:我的目標是Linux,對此感到遺憾。
在什麼平臺上?現在,在大多數Unix/Linux平臺上,鎖定文件是完全可靠的:使用os.open和O_CREAT | O_EXCL,這可以確保只有一個進程可以訪問該文件以及與基於內存或交換的文件系統相對應的路徑(如tmpfs :Solaris上的/ tmp,Linux上的/ run或/ var/run)解決了您的重新啓動問題。唯一的潛在問題是如果你的進程崩潰,不清理等... – isedev 2013-03-22 01:45:50
另一種選擇是使用基於內核的信號量。 – isedev 2013-03-22 01:47:48
對不起,Linux :-) – kolrie 2013-03-22 02:50:25