Аккорды аккордов Тайм-аут

Используя сельдерей, я построил аккорд аккордов:

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(), чтобы сделать это за два шага, так как эти хорды уже строятся в задаче.


person user2701815    schedule 11.08.2015    source источник
comment
это не похоже на тайм-аут - из исходного кода сельдерея кажется, что одна из подзадач вызвала исключение, которое не обрабатывается должным образом. Правильно ли определен ваш сервер результатов и разрешаете ли вы распространять исключения?   -  person scytale    schedule 12.08.2015
comment
Похоже, что в base.py есть тайм-аут: ret = j(timeout=3.0, propagate=propagate)   -  person user2701815    schedule 13.08.2015


Ответы (1)


Функция завершения аккорда вызовет исключение TimeoutError, даже если некоторые/все его групповые задачи установили: ignore_result=True

Когда срабатывает функция завершения, она не может найти никаких результатов для завершенных групповых задач, поэтому предполагает, что они были удалены из серверной части результатов из-за тайм-аута.

Трудно сказать, не видя вашего кода, так ли это. В любом случае, убедитесь, что вы не игнорируете результаты групповых задач.

person odedfos    schedule 19.12.2016