Source code for scheduler.daemon

import logging
import redis
from time import sleep
import json

import schedule

logger = logging.getLogger(__name__)


[docs]def trigger_queue(name: str, client: redis.Redis, queue: str): logger.info(f"pushing {name} to {queue}") client.lpush(queue, json.dumps({'name': name}))
[docs]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)