1

我是 Python 的新手,我正在尝试与我的家庭服务器同步自动同步。我发现了看门狗,我正在尝试使用它,但是每当我运行“touch test.txt”时,脚本就会不断启动新的统一进程。由于观察者使用的是从队列继承的类,我假设它应该在将第一个事件从队列顶部弹出后才阻塞。我在这里忽略了什么吗?

代码:

#!/usr/bin/python
import sys
import subprocess
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class ChangeHandler(FileSystemEventHandler):
   def on_any_event(self, event):
      subprocess.call(["/usr/bin/unison", "-batch", "-silent", "-ui", "text",
         "default"])

if __name__ == "__main__":
   observer = Observer()
   observer.schedule(ChangeHandler(), '/home/philip', True)
   observer.start()
   try:
      while True:
         time.sleep(1)
   except KeyboardInterrupt:
      observer.stop()
   observer.join()

输出:

props    <-?-> props      /  props    <-?-> props      Documents  props    <-?-> props      Downloads  props    <-?-> props      /  props    <-?-> props      Documents  props    <-?-> props      Downloads  props    <-?-> props      /  props    <-?-> props      Documents  props    <-?-> props      Downloads  props    <-?-> props      /  props    <-?-> props      Documents  props    <-?-> props      Downloads  props    <-?-> props      /  props    <-?-> props      Documents  props    <-?-> props      Downloads  props    <-?-> props      /  props    <-?-> props      Documents  props    <-?-> props      Downloads
4

1 回答 1

1

OP 在评论中充分回答了这个问题:

使用 pyinotify 最终了解我正在同步一个目录,同时查看同一目录中的文件系统事件。当然,除非我在处理事件时暂停观察者/通知者,否则我会接到多个电话。

于 2015-12-19T20:27:55.527 回答