Backon: Python retry zonder afhankelijkheden

Inleiding

Backon is een compacte Python‑bibliotheek die retry‑logica, circuit‑breaker functionaliteit en native async‑ondersteuning combineert, zonder externe afhankelijkheden.

Kernfunctionaliteit

  • Zero dependencies: werkt uit de standaardbibliotheek, waardoor installatie en distributie eenvoudig blijven.
  • Retry mechanisme: configureerbare pogingen, back‑off strategieën en uitsluitingsfilters.
  • Circuit breaker: voorkomt overbelasting van falende services door automatisch te schakelen tussen gesloten, open en half‑open toestanden.
  • Async native: ondersteunt zowel synchronische als asynchrone functies zonder extra wrappers.

Implementatiedetails

Backon maakt gebruik van decorateurs om functionaliteit toe te voegen aan bestaande functies. De decorateur accepteert parameters zoals max_attempts, delay, backoff_factor en exceptions. Voor de circuit‑breaker definieert men failure_threshold, recovery_timeout en een optionele fallback functie.

Voorbeeldcode

from backon import retry, circuit_breaker

@retry(max_attempts=5, delay=1, backoff_factor=2)
@circuit_breaker(failure_threshold=3, recovery_timeout=30)
def fetch_data():
    # netwerkrequest dat kan falen
    pass

De combinatie van beide decorateurs zorgt ervoor dat een mislukte request tot vijf keer wordt herhaald, waarna de circuit‑breaker de service tijdelijk blokkeert.

Prestatie‑overwegingen

Doordat er geen externe pakketten worden geladen, blijft de import‑tijd minimaal. De async‑variant maakt gebruik van asyncio.sleep voor wachttijden, waardoor de event loop niet wordt geblokkeerd.

Conclusie

Backon levert een efficiënte, dependency‑vrije oplossing voor retry‑ en circuit‑breaker patronen in zowel sync als async Python‑code. Het is geschikt voor micro‑services en scripts waar lichtgewicht betrouwbaarheid cruciaal is.