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