Увеличьте время повторения сельдерея, каждый цикл повторения
Вопрос
Я делаю повторные попытки с сельдереем, как в документе, пример:
@task()
def add(x, y):
try:
...
except Exception, exc:
add.retry(exc=exc, countdown=60) # override the default and
# retry in 1 minute
.
Как я могу увеличить обратный отсчет повторной попытки каждый раз, когда повторение происходит для этой работы - E.g.60 секунд, 2 минуты, 4 минуты и так далее, пока Maxretreiesexmeence был поднят?
Решение
С момента Версия 4.2 Вы можете использовать параметры RenacoCodicCode и autoretry_for
Для этих целей, например:
@task(max_retries=10, autoretry_for=(Exception,), retry_backoff=60)
def add(x, y):
pass
. Другие советы
Вот простой способ создания большей задержки каждый раз, когда задача оценивается.Это значение обновляется самим сельдереем, поэтому вам не нужно что-то управлять собой.
@task()
def add(x, y):
try:
...
except Exception as exc:
raise add.retry(exc=exc, countdown=60 * add.request.retries)
.
Примечание. Первая задача повторяется с обратным отсчетом 0. Поскольку количество повторных попыток 0 для первого прогона.
Держите переменную с вашим последним повторным временем в нем и умножите его на 2 каждый раз, пока он не превысит ничто на уровне (или, не подчиняется, если вы предпочитаете определенное количество раз ...)