在 python inotify 中未引发 IN_Q_OVERFLOW 事件

Posted

技术标签:

【中文标题】在 python inotify 中未引发 IN_Q_OVERFLOW 事件【英文标题】:IN_Q_OVERFLOW event not being raised in python inotify 【发布时间】:2016-03-15 19:43:04 【问题描述】:

当相应的事件队列已满时引发观察者队列事件时,inotify 系统显然会引发IN_Q_OVERFLOW 事件。我正在使用inotify python 包来注册 inotify 事件。我有兴趣知道何时引发 IN_Q_OVERFLOW 事件,但看起来 inotify 包完全忽略了此事件。有人对如何通过 inotify 或其他提供此行为的 python 包注册此事件有任何建议吗?

来自 inotify adapter.py 的片段

def __handle_inotify_event(self, wd, event_type):
    """Handle a series of events coming-in from inotify."""

        ....
        if path is None:
            break #if i print header.mask i clearly see 16384 or 0x00004000 the IN_Q_OVERFLOW bit
        yield (header, type_names, path, filename)

代码在这里

【问题讨论】:

【参考方案1】:

解决方案 - pyinotify!添加字符以达到 30...

【讨论】:

【参考方案2】:

你可能想试试守望者: https://facebook.github.io/watchman/

其中包含一个 python 客户端,但没有太多关于在 Python 中使用它的文档。我建议查看 watchman-wait 和 watchman-make 工具的实现

Watchman 的工作方式与大多数文件监视系统稍有不同,因为它维护您正在监视的目录树的一致视图。它将在内部处理溢出事件并传递有关它们的信息。默认情况下,它只会告诉您所有文件可能已更改,因此您无需更改应用程序逻辑,除非您关心发现在溢出事件期间被删除的文件。

免责声明:我创建并维护守望者

【讨论】:

这是蟒蛇吗?不幸的是,我需要一个轻量级的 python 包装器。我怀疑这不符合要求 有一个服务进程,你可以使用 python 与之对话。服务过程会处理许多棘手的情况。 python部分是轻量级的;它通过 unix 套接字与服务通信。

以上是关于在 python inotify 中未引发 IN_Q_OVERFLOW 事件的主要内容,如果未能解决你的问题,请参考以下文章

Python Inotify 监视LINUX文件系统事件

python inotify 监控 In_closted_write 和 in_moved_to 事件

迁移中未找到模型(apps.get_model 引发 LookupError)

如何使用inotify

如何使用inotify

零是 IN_MOVED_TO/FROM inotify 事件的有效 cookie 值吗?