使用芹菜,我构造了一个和弦:
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()
来执行此操作,因为这些和弦已在任务中构建。
答案 0 :(得分:0)
如果部分/全部组任务已设置,和弦完成功能也会引发TimeoutError异常:ignore_result = True
当完成功能触发时,它无法找到已完成的组任务的任何结果,因此它假定它们已因超时而从结果后端中清除。
如果是这种情况,如果没有看到您的代码,很难说清楚。 无论如何,请确保您不要忽略小组任务的结果。