Python Retrying

Da Andreabont's Wiki.

Retrying è una libreria in grado di intercettare le eccezioni e ritentare ad effettuare la chiamata andata in errore fino all'avvenuto esito positivo. Va usata con attenzione e ben configurata, in modo da evitare loop infiniti o ingnorare errori gravi. La libreria funziona attraverso l'uso di decoratori.

Installazione della libreria

pip install retrying

Esempio base

import random
from retrying import retry

@retry
def miafunzione():
    if random.randint(0, 10) > 1:
        raise IOError("Errore")
    else:
        return "Ok!"

print(miafunzione())

Configurazione del decoratore

Numero massimo di tentativi

@retry(stop_max_attempt_number=7)

Configurazione di un timeout in millisecondi

@retry(stop_max_delay=10000)

Configurazione del ritardo per ogni nuovo tentativo in millisecondi

@retry(wait_fixed=2000)

Configurazione del ritardo casuale per un nuovo tentativo

@retry(wait_random_min=1000, wait_random_max=2000)