Pregunta

Hago reintentos con apio como en el ejemplo de DOCS:

@task()
def add(x, y):
    try:
        ...
    except Exception, exc:
        add.retry(exc=exc, countdown=60)  # override the default and
                                          # retry in 1 minute

¿Cómo puedo aumentar la cuenta regresiva de reintento cada vez que ocurre el reintento para este trabajo?60 segundos, 2 minutos, 4 minutos y así sucesivamente hasta que se eleva el máximo

¿Fue útil?

Solución

Desde versión 4.2 puede usar las opciones autoretry_for y retry_backoff Para estos fines, por ejemplo:

@task(max_retries=10, autoretry_for=(Exception,), retry_backoff=60)
def add(x, y):
    pass

Otros consejos

Aquí hay una forma sencilla de crear un retraso más grande cada vez que se evalúa la tarea.Este valor es actualizado por el propio apio para que no necesite administrar nada mismo.

@task()
def add(x, y):
    try:
        ...
    except Exception as exc:
        raise add.retry(exc=exc, countdown=60 * add.request.retries) 

Nota: la primera tarea se repite con la cuenta regresiva de 0. Debido a que el número de reintentos es 0 para la primera carrera.

Mantenga una variable con su último tiempo de reintento en él, y multiplícelo por 2 cada vez hasta que exceda el nivel que desee (o, mantenga un conteo si prefiere un cierto número de veces ...)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top