Сеть сельдерея - Последнее задание никогда не называется

Цепочка последовательности (группа (задачи), 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 Версия Celery — 3.1.25


person Biddappa Muthappa    schedule 03.05.2018    source источник


Ответы (1)


Попробуй это,

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

Вывод group([the_big_task1, the_big_task2]) будет аргументами final_sum.

Как вы написали поток, он должен работать, что странно, chord тоже не работал.

person Rajmani Arya    schedule 09.05.2018