whisper-daemon/pipeline/schedulethread.py

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)