Aumentare il tempo di riprova del sedristino ogni ciclo di tentativi
Domanda
Io ritengo con il sedano come nel documento - Esempio:
@task()
def add(x, y):
try:
...
except Exception, exc:
add.retry(exc=exc, countdown=60) # override the default and
# retry in 1 minute
.
Come posso aumentare il conto alla rovescia dei ripassioni ogni volta che si verifica il tentativo per questo lavoro - E.G.60 secondi, 2 minuti, 4 minuti e così via fino a quando il MaxretiesExceeded è sollevato?
Soluzione
Dal momento che Versione 4.2 È possibile utilizzare le opzioni autoretry_for
e retry_backoff
per questo scopo, ad esempio:
@task(max_retries=10, autoretry_for=(Exception,), retry_backoff=60)
def add(x, y):
pass
. Altri suggerimenti
Ecco un modo semplice per creare un ritardo più grande ogni volta che viene valutata l'attività.Questo valore è aggiornato da sedano stesso quindi non è necessario gestire nulla.
@task()
def add(x, y):
try:
...
except Exception as exc:
raise add.retry(exc=exc, countdown=60 * add.request.retries)
.
Nota: la prima attività viene ripetuta con il conto alla rovescia di 0. Poiché il numero di tentativi è 0 per la prima corsa.
Mantieni una variabile con il tuo ultimo tempo di riprova in esso, e moltiplicarlo per 2 ogni volta fino a superare qualsiasi livello che desideri (o, mantieni un conteggio se preferisci un certo numero di volte ...)