[英]Python Watchdog: Why is my subprocess called continuously?
我是Python的新手,我正在嘗試自動協調與家庭服務器的同步。 我發現了看門狗,並試圖使用它,但是每當我運行“ touch test.txt”時,腳本就會不斷啟動新的協調進程。 由於觀察者使用的是從Queue繼承的類,因此我假設它應該在將第一個事件彈出隊列頂部之后立即阻塞。 我在這里忽略了什么嗎?
碼:
#!/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
OP在評論中充分回答了這一點:
經過與pyinotify的合作,終於了解到我正在同步目錄,同時在同一目錄中監視文件系統事件。 當然,除非處理事件時掛起Observer / Notifier,否則我會接到多個電話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.