From cd2dd051e9d370c1f4f2ce0133f729f7f6dca4dd Mon Sep 17 00:00:00 2001 From: Klaus-Uwe Mitterer Date: Tue, 23 Nov 2021 08:30:31 +0100 Subject: [PATCH] Fix setting up watches --- classes/doghandler.py | 8 ++++---- classes/shorethread.py | 32 +++++++++++++++++++++++++------- worker.py | 2 +- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/classes/doghandler.py b/classes/doghandler.py index 01177f1..af6843b 100644 --- a/classes/doghandler.py +++ b/classes/doghandler.py @@ -6,13 +6,13 @@ class DogHandler(FileSystemEventHandler): self._queue = queue def on_created(self, event): - pass + self._queue.put("Created: " + event.src_path) def on_modified(self, event): - pass + self._queue.put("Modified: " + event.src_path) def on_moved(self, event): - pass + self._queue.put("Moved: " + event.src_path + " to: " + event.dest_path) def on_deleted(self, event): - pass \ No newline at end of file + self._queue.put("Deleted: " + event.src_path) \ No newline at end of file diff --git a/classes/shorethread.py b/classes/shorethread.py index 38e2e5c..db36230 100644 --- a/classes/shorethread.py +++ b/classes/shorethread.py @@ -8,17 +8,17 @@ from multiprocessing import Process, Queue import time class ShoreThread: - def __init__(self, files): + def __init__(self, files, directories): super().__init__() - self._config = MonsterConfig() self._dogs = [] self.files = files self.queue = Queue() + self.directories = directories def getAllFiles(self): files = [] - for directory in self._config.directories: + for directory in self.directories: files.append(directory.getFiles()) return files @@ -27,11 +27,29 @@ class ShoreThread: del self.files[:] def monitor(self): - for directory in self._config.directories: - dog = DogHandler(self.queue) - + for directory in self.directories: + print("Creating dog for " + str(directory.location)) + handler = DogHandler(self.queue) + dog = Observer() + dog.schedule(handler, str(directory.location)) + dog.start() self._dogs.append(dog) def run(self): print("Launched Shore Thread") - self.clearFiles() + self.monitor() + try: + while True: + self.processQueue() + except KeyboardInterrupt: + self.stop() + raise + + def processQueue(self): + if not self.queue.empty: + event = self.queue.get() + print(event) + + def stop(self): + for dog in self._dogs: + dog.kill() \ No newline at end of file diff --git a/worker.py b/worker.py index 5ef0536..569bec2 100644 --- a/worker.py +++ b/worker.py @@ -24,7 +24,7 @@ if __name__ == '__main__': threads.append(thread) try: - shore = ShoreThread(files) + shore = ShoreThread(files, config.directories) shore.run() except KeyboardInterrupt: print("Keyboard interrupt received - stopping threads")