2012-07-26 35 views
4

我正在使用pyinotify(process_IN_MOVED事件)來監視文件出現在目錄中。當出現新文件時,將觸發此事件並以某種方式處理文件。問題是,有時文件出現在目錄中的速度比我能處理它們的速度快,這意味着一堆文件不會得到處理。我可以有一個功能睡10秒,然後醒來找到新的文件或東西,但我真的想堅持基於事件的解決方案,如果可能的話。有沒有辦法做到這一點?文件出現在目錄中比我可以處理它們更快(pyinotify)

回答

2

扭曲了inotify support。你可以給它一個回調來做你的處理。你絕對不想成爲sleep ing。這取決於你正在做什麼樣的處理,以確定是要在進程中還是通過另一個進程來完成它,但是不應該丟失事件。

3

通常我會在這裏實現一個線程池來處理處理,而事件觀察者只是在觀察事件並將它們傳遞給池。 粗糙例如:

(event happens) -> 
Watcher registers the event -> 
puts it into the thread pool queue -> 
thread pool processes the event 

這樣,觀察者將花最少的時間等待的部分之外,從而大大減少了錯過的更新的機會。

1

正如Humungus所說,線程池在這裏是一個不錯的選擇。

我剛剛發佈了一些代碼,我寫了整整這個問題,在:

https://github.com/timstaley/autocrunch

這是一個有點凌亂,應用程序的具體細節,但你應該能夠替代函數放棄對自己的需要。 我可能會在某個時候寫一篇減少版的博客文章,但現在沒時間了。 HTH!

相關問題