我正在创建一个应用程序,该应用程序将创建一个要执行的任务链,但链会根据用户对该片添加的愿望执行任务。如何在Celery中创建条件子任务链?
例如,如果用户想要start_boo
链可能是:
def start_boo():
chain = start_foo.s() | start_bar.s() | start_baz.s()
chain()
但是,如果foo
和baz
已经开始了,我们不希望这样做;而是宁愿是这样的:
def start_boo(foo=True, bar=True, baz=True):
if not (foo or bar or baz):
raise Exception("At least one should be true...")
chain = None
if foo:
chain |= start_foo.s()
if bar:
chain |= start_bar.s()
if baz:
chain |= start_baz.s()
chain()
start_boo(foo=False, baz=False)
然而,这不会因为各种原因工作。
有没有一个习惯做这样的事情?
对于我的目标,我的理解和我的尝试,这似乎是一个非常有效的问题。请解释降价,以便我可以更好地提出问题。 – erip