4

使用芹菜,我构建了一个和弦:

from celery import chord
chord(task1, chord(task2, task3))

但是,它通常会引发超时:

Chord '0f3dd024-8fe3-4b1b-ab9b-6081569c9738' raised:  
"TimeoutError('Operation timed out (3.0)',)"  
    Traceback (most recent call last):  
    File "python2.7/site-packages/celery/backends/base.py", line 568, in on_chord_part_return   
    StopIteration  
    culprit = next(deps._failed_join_report())

有没有办法修改超时设置以允许这种芹菜设计?

请注意,每个任务中都有子任务,因此链似乎并不能确保在开始下一个任务之前所有子任务都已完成。

另一个限制是我不能通过get()两个步骤调用来执行此操作,因为这些和弦已经在任务中构建。

4

1 回答 1

0

如果部分/所有组任务已设置,则和弦完成函数也会引发 TimeoutError 异常:ignore_result=True

当完成函数触发时,它找不到已完成的组任务的任何结果,因此它假设它们由于超时而已从结果后端清除。

如果是这种情况,如果没有看到您的代码,就很难判断。无论如何,请确保您不要忽略小组任务的结果。

于 2016-12-19T08:36:35.137 回答