使用 pyinotify 在目录中创建假脱机的最佳方法是啥?

Posted

技术标签:

【中文标题】使用 pyinotify 在目录中创建假脱机的最佳方法是啥?【英文标题】:What is the best way to make a spool in a directory with pyinotify?使用 pyinotify 在目录中创建假脱机的最佳方法是什么? 【发布时间】:2012-01-31 01:01:07 【问题描述】:

我试图在创建目录时将目录中的每个文件移动到另一个文件。也许我可以干净地停止守护进程(pyinotify 实例运行),并继续在 orig/spool 目录中创建原始文件。

我想在守护进程再次启动后进行处理。也许我可以利用 inotify 内核队列?

提前致谢

【问题讨论】:

【参考方案1】:

您并不想在创建它们时移动它们,而是在它们关闭时移动它们。一旦它们被关闭(并且没有人有任何打开的文件句柄),您可以认为它们“完整”并且您可以毫无意外地移动它们。

如果您寻找“close_write”事件,您可能会很好。 (虽然这并不能保证文件包含数据或新数据,但您必须验证 modify->close_write 事件。但 99.99% 的情况下,close_write 会完成这项工作。

【讨论】:

是的,这都是真的,我会捕捉到 close_write 事件。我的问题是在启动序列中,在整个树中循环寻找守护进程未运行时创建(写关闭)的文件。

以上是关于使用 pyinotify 在目录中创建假脱机的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Pyinotify -- 目录重命名后从原始路径引发的事件

出现在目录中的文件比我处理它们的速度更快(pyinotify)

关于实现 pyinotify 实例来监控目录的问题

pyinotify:处理 IN_MODIFY 触发器

pyinotify 的可疑线程问题

Dropbox 和 pyinotify