• Contact

Exponential Backoff

  • Mise à jour le 2 avril 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.

Article associé

Technical Note
Gestion des échecs en Bash : Implémenter un Exponential Backoff pour les réessais

En programmation, les échecs temporaires lors des connexions réseau ou des accès à des ressources distantes sont inévitables. Plutôt que de laisser ces interruptions compromettre vos scripts, pourquoi ne pas adopter une stratégie éprouvée pour les gérer efficacement ? Découvrez comment implémenter l'exponential backoff, un design pattern puissant qui rendra vos scripts plus fiables et résilients.

Nicolas Verlhiac
Nicolas Verlhiac
  • 4 min à lire
tracking-thumb