我想每15分鐘打開一個日誌文件,看看這個文件是否叫'finalize'字符串。我知道如何檢查文件的字符串,但我不知道是否有一種簡單的方法讓腳本每15分鐘一次。用Python每15分鐘檢查一次日誌文件
是否有某種模塊可以讓我做到這一點?
[編輯]我想這是因爲我正在寫隊列程序。也就是說,一旦一個工作電話敲定,該腳本將加載另一個作業,然後監視,直到它完成,等
我想每15分鐘打開一個日誌文件,看看這個文件是否叫'finalize'字符串。我知道如何檢查文件的字符串,但我不知道是否有一種簡單的方法讓腳本每15分鐘一次。用Python每15分鐘檢查一次日誌文件
是否有某種模塊可以讓我做到這一點?
[編輯]我想這是因爲我正在寫隊列程序。也就是說,一旦一個工作電話敲定,該腳本將加載另一個作業,然後監視,直到它完成,等
的sched
模塊會讓你做這個。 threading
模塊中的Timer
類也將如此。
但是,這些都是你想要的東西矯枉過正。
使用系統的調度程序(Windows上的計劃任務,Mac上的啓動服務,cron
或大多數其他系統上的相關程序)每隔15分鐘運行一次程序即可。
或者,只需使用time.sleep(15*60)
,然後檢查time.time()
實際上是否比通過該循環的上次時間晚15 * 60秒。
從外部觸發腳本的一個優點是它可以非常容易地更改觸發器。例如,您可以將其更改爲在文件每次修改時觸發,而不是每15分鐘一次,而不必更改腳本。 (當然,確切的方式取決於您的平臺; LaunchServices,famd,inotify,FindFirstChangeNotification等工作方式完全不同,但每個現代平臺都有某種方式可以做到這一點。)
在python-tail模塊看看:
import tail
def print_line(txt):
print 'finalize' in txt
t = tail.Tail('/var/log/syslog')
t.register_callback(print_line)
t.follow(s=60*15)
您可以使用調度模塊scheduler.run()
該函數等待下一個事件,然後執行它等等,直到沒有更多的計劃事件。您可以創建一個事件隊列來執行此操作。 check out the python docs
只需要cron定期運行腳本? – roippi
代碼是否在網頁中運行? –