import logging from systemd.daemon import notify from 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()