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?

È stato utile?

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 ...)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top