Подтвердить что ты не робот

Увеличьте время повторения попыток сельдерея каждый цикл повтора

Я делаю повторы с сельдереем, как в примере с Документами:

@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?

4b9b3361

Ответ 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 каждый раз, пока она не превысит любой уровень, который вы хотите (или, если вы предпочитаете определенное количество раз),