2013-07-17 93 views
1

我想每15分鐘打開一個日誌文件,看看這個文件是否叫'finalize'字符串。我知道如何檢查文件的字符串,但我不知道是否有一種簡單的方法讓腳本每15分鐘一次。用Python每15分鐘檢查一次日誌文件

是否有某種模塊可以讓我做到這一點?

[編輯]我想這是因爲我正在寫隊列程序。也就是說,一旦一個工作電話敲定,該腳本將加載另一個作業,然後監視,直到它完成,等

+1

只需要cron定期運行腳本? – roippi

+0

代碼是否在網頁中運行? –

回答

3

sched模塊會讓你做這個。 threading模塊中的Timer類也將如此。

但是,這些都是你想要的東西矯枉過正。

使用系統的調度程序(Windows上的計劃任務,Mac上的啓動服務,cron或大多數其他系統上的相關程序)每隔15分鐘運行一次程序即可。

或者,只需使用time.sleep(15*60),然後檢查time.time()實際上是否比通過該循環的上次時間晚15 * 60秒。


從外部觸發腳本的一個優點是它可以非常容易地更改觸發器。例如,您可以將其更改爲在文件每次修改時觸發,而不是每15分鐘一次,而不必更改腳本。 (當然,確切的方式取決於您的平臺; LaunchServices,famd,inotify,FindFirstChangeNotification等工作方式完全不同,但每個現代平臺都有某種方式可以做到這一點。)

2

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) 
0

您可以使用調度模塊scheduler.run()該函數等待下一個事件,然後執行它等等,直到沒有更多的計劃事件。您可以創建一個事件隊列來執行此操作。 check out the python docs