如何在 Python 中异步获取文件差异

How to get the diff of a file asynchronously in Python

我正在编写一个显示日志文件 tail 的网络应用程序组件。

我目前的尝试是使用网络套接字发出文件中的更改,确保少于 n 行,并将其添加到文本区域。

我目前的问题是如何为 Python 中的日志文件生成 'on change' 事件。

我可以想象通过用 shutil, detect the last time the file was changed with os.path.getmtime 创建副本 some_copy.log 来检测 some_log.log 的变化,获取差异并发出变化。这有点低效。

有人对使用 Python 异步检测文件更改有什么建议吗?我正在使用 Python 2.7.6.

我会为未来的读者添加这个,但如果其他人想提出不同的想法,我会很乐意接受他们。

我找到了一个名为 tailer 的包,它是 unix tail 程序的包装器。大致在 pythonic 伪代码中,我计划在一个单独的线程中执行以下操作:

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