В Celery, вы можете retry
выполнить любую задачу в случае исключения. Вы можете сделать это так:
@task(max_retries=5)
def div(a, b):
try:
return a / b
except ZeroDivisionError, exc:
raise div.retry(exc=exc)
В этом случае, если вы хотите разделить на ноль, задача будет выполняться пять раз. Но вы должны явно проверить наличие ошибок в вашем коде. Задание не будет выполнено, если вы пропустите блок try-except
.
Я хочу, чтобы мои функции выглядели следующим образом:
@celery.task(autoretry_on=ZeroDivisionError, max_retries=5)
def div(a, b):
return a / b