Конфигурация сельдерея для повторного отката - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу, чтобы все асинхронные задачи в моем приложении повторялись при любом исключении, а также чтобы повторные попытки следовали экспоненциальному откату.

@celery_app.task(autoretry_for=(Exception,))
def some_task():
    ...

В моей конфигурации у меня есть

CELERY_TASK_ANNOTATIONS = {'*': {'max_retries': 5, 'retry_backoff': 5}}

Параметр max_retries работает, и все задачи теперь повторяются 5 раз до сбоя. Но все они повторяются через 180 секунд. Я хочу, чтобы все задачи выполнялись retry_backoff без указания его для каждого из них, чтобы я мог изменить его в любое время в одном месте.

1 Ответ

0 голосов
/ 06 ноября 2019

Чтобы избежать изменения в нескольких местах, вы можете использовать глобальную переменную, скажем global_retry_backoff=5, которую вы будете использовать в аннотациях задач: @celery_app.task(autoretry_for=(Exception,), retry_backoff=global_retry_backoff).

...