У меня есть эта настройка сторожевого таймера в файле main.py, который должен запускать Watcher как демон (в фоновом режиме), делать некоторые вещи во время его работы (на которые должен реагировать Watcher, например, создавать тестовый файл), затем завершить работу Watcher.
from watchdog.events import PatternMatchingEventHandler
from watchdog.observers import Observer
import time
import threading
class Watcher:
def watch_dir(self):
patterns = "*"
event_handler = PatternMatchingEventHandler(patterns)
event_handler.on_any_event = self.on_any_event
observer = Observer()
observer.schedule(event_handler, 'someDirToObserve')
observer.start()
try:
while True:
time.sleep(2)
except Exception as e:
observer.stop()
time.sleep(30)
observer.join()
def on_any_event(self, event):
print(event)
def start_watcher(watcher):
watcher.watch_dir()
def main():
print("Start")
watcher = Watcher()
thread = threading.Thread(target=start_watcher(watcher), daemon=True)
thread.start()
test_file = 'SomeTestFile'
test_file.unlink()
with test_file.open('w') as f:
f.write('Test')
print("Oh shit")
thread.join()
if __name__ == '__main__':
main()
Как запустить Watcher в фоновом режиме во время выполнения своих операций и как правильно завершить его?