Aumentar el tiempo de reintento de apio cada ciclo de reintento
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
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 ...)