import logging import redis from time import sleep import schedule logger = logging.getLogger(__name__) def trigger_queue(name: str, client: redis.Redis, queue: str): logger.info(f"pushing {name} to {queue}") client.lpush(queue, name) def run_daemon(config: dict, host: str, port: int): """Run the scheduler daemon, scheduling signals to send to other services""" # initialize the queue client client = redis.Redis(host=host, port=port, charset="utf-8", decode_responses=True) schedules = config["schedules"] for s in schedules: number, time_unit = s["schedule"].split(" ") job = schedule.every(int(number)) job = getattr(job, time_unit).do( trigger_queue, name=s["name"], client=client, queue=s["queue"] ) while True: schedule.run_pending() sleep(1)