import redis import tasks from pickle import loads, dumps q = redis.Redis() while True: f, args = loads(q.blpop("tasks")[1]) getattr(tasks, f)(*args) if f == "build_portfolio": q.rpush("tasks", dumps(("build_scenarios", args))) if f == "build_scenarios": q.rpush("tasks", dumps(("generate_scenarios", args[:-1])))