如何在Celery中创建一系列条件子任务?

时间:2016-08-23 10:57:13

标签: python-3.x celery celery-task

我正在创建一个应用程序,它将创建一系列要执行的任务,但链条将执行任务,这取决于用户是否希望添加该作品。

例如,如果用户希望链start_boo可能是:

def start_boo():
    chain = start_foo.s() | start_bar.s() | start_baz.s()
    chain()

但是,如果foobaz已经启动,我们就不希望这样做;而宁愿选择像:

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)

然而,由于各种原因,这不会起作用。

这样的事情是否有成语?

1 个答案:

答案 0 :(得分:1)

成语是来自reduce的{​​{1}}函数。您可以执行以下操作:

functools