@Strohmann

Возможен ли вызов задачи в цепочке с параметрируемой опцией max_retries?

Нужно выполнять одну и ту же задачу в разных цепочках с различным поведением. Для цепочки A я хочу ограничивать количество перезапусков, поэтому указываю этот параметр при объявлении самой задачи
@shared_task(bind=True, max_retries=1)
task(args):
   pass

Как можно переопределить параметр max_retries при вызове задачи из цепочки B, чтобы задача перезапускалась бесконечно?
chain(task.s(args).set(max_retries=None), task2...)
что-то не работает =(

Почему я думаю, что должно работать?
Метод set позволяет задать опции для задачи, вызываемой через сигнатуру

You can’t define options with s(), but a chaining set call takes care of that (link)


Task.max_retries
The maximum number of attempted retries before giving up. If the number of retries exceeds this value a MaxRetriesExceededError exception will be raised.
The default is 3. A value of None will disable the retry limit and the task will retry forever until it succeeds.
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler
бекенд-разработчик на python
Вариант инициализации сигнатуры без шоткатов:
task.signature(args=..., kwargs=..., **options)

The default is 3. A value of None will disable the retry limit and the task will retry forever until it succeeds.


Проблема в том, что None где-то там внутри означает "не задано" и дефолтится к дефолтным 3 повторам. Во всяком случае так было во времена 3.1. Мы внутри для бесконечных повторов модифицируем task.request.retries.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы