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

StackOverflow https://stackoverflow.com/questions/9470089

  •  13-11-2019
  •  | 
  •  

Вопрос

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

@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 каждый раз, пока он не превысит ничто на уровне (или, не подчиняется, если вы предпочитаете определенное количество раз ...)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top