import logging from systemd.daemon import notify from utils.db import dbconn from common 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("Running '{}' with {}".format(rpc.fun, rpc.args)) if rpc.fun == "generate_scenarios": rpc.args += [ET] try: rpc() except CalledProcessError: print("'{}' did not complete".format(rpc.fun)) else: print("'{}' completed".format(rpc.fun)) 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()