import logging from systemd.daemon import notify from serenitas.utils.db import dbconn from serenitas.utils import get_redis_queue from subprocess import CalledProcessError from tasks import Rpc def run(): ET = dbconn("etdb") q = get_redis_queue() notify("READY=1") while True: rpc = Rpc.from_json(q.blpop("tasks")[1].decode("utf-8")) print(f"Running '{rpc.fun}' with {rpc.args}") if rpc.fun == "generate_scenarios": rpc.args += [ET] try: rpc() except CalledProcessError: print(f"'{rpc.fun}' did not complete") else: print(f"'{rpc.fun}' completed") if rpc.fun == "build_portfolios": q.rpush("tasks", str(Rpc("build_scenarios", rpc.args))) if rpc.fun == "build_scenarios": q.rpush("tasks", str(Rpc("generate_scenarios", rpc.args[:-1]))) ET.close() if __name__ == "__main__": logger = logging.getLogger("intex") logger.setLevel(logging.INFO) logger.addHandler(logging.StreamHandler()) run()