32 lines
852 B
Python
32 lines
852 B
Python
import logging
|
|
|
|
from sched import scheduler
|
|
from threading import Thread, Event
|
|
from time import sleep
|
|
|
|
|
|
class ScheduleThread(Thread):
|
|
def __init__(self, schedule: scheduler):
|
|
super().__init__()
|
|
self._running = False
|
|
self._kill = Event()
|
|
self.schedule = schedule
|
|
self.logger = logging.getLogger(
|
|
f'whisper-daemon.{self.__class__.__name__}')
|
|
|
|
def run(self):
|
|
self.logger.debug('Starting')
|
|
self._running = True
|
|
while not self._kill.is_set():
|
|
self.schedule.run(blocking=False)
|
|
self._kill.wait(60)
|
|
self._running = False
|
|
self.logger.debug('Stopped')
|
|
|
|
def shutdown(self, block=True):
|
|
self.logger.debug('Stopping')
|
|
self._kill.set()
|
|
if block:
|
|
while self._running == True:
|
|
sleep(1)
|