2016-02-19 64 views
1

我正在編寫一個顯示日誌文件的tail的Web應用程序組件。如何在Python中異步獲取文件的差異

我目前的嘗試是使用網絡套接字發送文件中的更改,確保我有少於n行,並將其粘貼到文本區域中。

我目前的問題是如何在Python中爲日誌文件生成'on change'事件。

我可以想象用shutil創建副本some_copy.log檢測some_log.log變化,檢測最後一次的文件是用os.path.getmtime改變,採取diff和發射的變化。這種效率低下。

有沒有人有建議使用Python異步檢測文件的變化?我正在使用Python 2.7.6。

+1

我想這個問題已被問到:[detect-file-change-without-polling](http://stackoverflow.com/questions/5738442/detect-file-change-without-polling) – Benjamin

+0

@Benjamin這些工具大部分都是目錄觀察者,而不是文件觀察者。此外,他們中的大多數已被放棄。 – erip

回答

0

我會爲未來的讀者添加這個,但如果其他人想要提出其他想法,我會很樂意接受他們。

我發現了一個名爲tailer的包,它是unix tail程序的一個包裝。粗略地在pythonic僞代碼中,我打算在單獨的線程中執行以下操作:

for line in tailer.follow(open('some_log.log')): 
    emit(line)