contentmonster/classes/shorethread.py

55 lines
1.3 KiB
Python
Raw Normal View History

2021-11-22 10:14:38 +00:00
from classes.config import MonsterConfig
from classes.doghandler import DogHandler
from watchdog.observers import Observer
from multiprocessing import Process, Queue
import time
class ShoreThread:
2021-11-23 07:30:31 +00:00
def __init__(self, files, directories):
2021-11-22 10:14:38 +00:00
super().__init__()
self._dogs = []
self.files = files
self.queue = Queue()
2021-11-23 07:30:31 +00:00
self.directories = directories
2021-11-22 10:14:38 +00:00
def getAllFiles(self):
files = []
2021-11-23 07:30:31 +00:00
for directory in self.directories:
2021-11-22 10:14:38 +00:00
files.append(directory.getFiles())
return files
def clearFiles(self):
del self.files[:]
def monitor(self):
2021-11-23 07:30:31 +00:00
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()
2021-11-22 10:14:38 +00:00
self._dogs.append(dog)
def run(self):
print("Launched Shore Thread")
2021-11-23 07:30:31 +00:00
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()