• Contact

Exponential Backoff

  • Mise à jour le 6 mars 2026
  • 1 min. à lire

L'exponential backoff est une stratégie de gestion des erreurs réseau qui consiste à espacer progressivement les nouvelles tentatives après un échec, en doublant le délai d'attente à chaque retry.

Sans cette logique, un client qui réessaie immédiatement après un échec risque de surcharger un serveur déjà en difficulté — aggravant le problème au lieu de le résoudre.

Fonctionnement

Tentative 1 → échec → attendre 1s
Tentative 2 → échec → attendre 2s
Tentative 3 → échec → attendre 4s
Tentative 4 → échec → attendre 8s
...jusqu'au succès ou nombre max de tentatives

Exemple

import time

def fetch_with_backoff(url, max_retries=5):
    delay = 1
    for attempt in range(max_retries):
        response = requests.get(url)
        if response.status_code == 200:
            return response
        print(f"Échec, retry dans {delay}s...")
        time.sleep(delay)
        delay *= 2  # doublement du délai
    raise Exception("Max retries atteint")

Jitter

En production, on ajoute souvent un jitter (délai aléatoire) pour éviter que tous les clients réessaient exactement au même moment (thundering herd).

À retenir

L'exponential backoff est un pattern standard dans toute communication réseau robuste — APIs, queues, bases de données. Notre implémentation détaillée : Logique retry et exponential backoff.

tracking-thumb