diff --git a/hc_spider/timer.py b/hc_spider/timer.py new file mode 100644 index 0000000..e80260c --- /dev/null +++ b/hc_spider/timer.py @@ -0,0 +1,28 @@ +import os +import threading +import time + +from hc_spider.model import SharedObjects + + +class Timer(threading.Thread): + _shared_objects: SharedObjects + + def __init__(self, **kwargs) -> None: + self._shared_objects = SharedObjects(**kwargs) + super().__init__() + self.daemon = True + self.name = "Timer" + + def run(self) -> None: + print(f"{self.name} started with pid [{os.getpid()}]") + runtime = self._shared_objects.config.get("timer_runtime", 0) + if runtime == 0: + return + time.sleep(runtime) + print(f"{self.name} timer reached the end of runtime, exiting") + self._shared_objects.shutdown_event.set() + print(f"[{self.name}] is shutting down", flush=True) + + def __del__(self) -> None: + print(f"[{self.name}] exited")