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.