芹菜链 - 最后的任务从未被调用过

时间:2018-05-03 15:58:02

标签: celery celery-task

序列链(group(tasks),final_sum.s())不为第二个任务提供参数 即使其他一切都成功,外链中的final_sum.s()也不会被执行。

def function_task():
tasks1 = []
for i in xrange(10, 13):
    tasks.append(add.s(i))
the_big_task1 = chain(get_one.s(), group(tasks1), sum_fun.s())
tasks2 = []
for i in xrange(20, 23):
    tasks2.append(add.s(i))
the_big_task2 = chain(get_one.s(), group(tasks2), sum_fun.s())

chain(group([the_big_task1, the_big_task2]), final_sum.s())()

@celery_app.task(name='tasks.get_one')
def get_one():
    return 1


@celery_app.task(name='tasks.add')
def add(x, y):
    return x + y


@celery_app.task(name='tasks.sum_fun')
def sum_fun(a_list):
    return sum(a_list)

@celery_app.task(name='tasks.final_sum')
def final_sum(header_results): 
    # do something 

我们遇到的问题是永远不会调用最终任务。 我们也尝试用和弦包装它,这也不起作用。

Python版 - 2.7 芹菜版 - 3.1.25

1 个答案:

答案 0 :(得分:0)

试试这个,

chain(group([the_big_task1, the_big_task2]))(final_sum.s())

group([the_big_task1, the_big_task2])的输出将是final_sum的算法。

你编写流程的方式,它应该起作用,这很奇怪,chord也没有用。