【问题标题】:Celery Chain - The final task is never called芹菜链 - 永远不会调用最终任务
【发布时间】:2018-10-14 00:29:10
【问题描述】:

序列链(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

【问题讨论】:

    标签: celery celery-task


    【解决方案1】:

    试试这个,

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

    group([the_big_task1, the_big_task2]) 的输出将是 final_sum 的参数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 2018-03-07
      • 2012-09-28
      • 2013-02-19
      • 2019-04-29
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多