Fluxgate - Kaydırmalı pencere ve birleştirilebilir kuralları destekleyen Python Circuit Breaker
(byexist.github.io)Mevcut Python Circuit Breaker kütüphanelerini (circuitbreaker, pybreaker vb.) kullanırken eksik bulduğum noktalar vardı.
- Yalnızca ardışık hata sayısını kullanıyor: Bir kez başarılı olunca sıfırlanıyor, bu da kararsız servisleri tespit etmeyi zorlaştırıyor
- Kurtarma sırasında yalnızca tek bir test çağrısına izin veriyor: Cache warming gibi durumlar için yetersiz
Django Permission operatör desteğinden ve resilience4j'nin pencere yönetiminden ilham aldım.
Kurulum
pip install fluxgate
Temel kullanım
from fluxgate import CircuitBreaker
cb = CircuitBreaker(name="external_api")
@cb
def call_api():
return requests.get("https://api.example.com/data")
Varsayılan: Son 100 çağrının %50'si başarısız olursa devre açılır, 60 saniye sonra kurtarma denenir
Asenkron destek
from fluxgate import AsyncCircuitBreaker
cb = AsyncCircuitBreaker(name="external_api")
@cb
async def call_api():
async with httpx.AsyncClient() as client:
return await client.get("https://api.example.com/data")
Temel özellikler
Kaydırmalı pencere + hata oranı tabanlı açılma
from fluxgate import CircuitBreaker
from fluxgate.trippers import MinRequests, FailureRate, FailureStreak
cb = CircuitBreaker(
name="api",
tripper=FailureStreak(5) | (MinRequests(100) & FailureRate(0.5))
)
→ 5 kez art arda hata olduğunda veya son 100 çağrının %50'si başarısız olduğunda devre açılır
Kademeli kurtarma (RampUp)
from fluxgate.permits import RampUp
cb = CircuitBreaker(
name="api",
permit=RampUp(initial=0.1, final=1.0, duration=60.0)
)
→ Kurtarma sırasında trafik %10'dan başlayıp 60 saniye içinde kademeli olarak %100'e çıkar
Mevcut kütüphanelerle özellik karşılaştırması
| Özellik | fluxgate | circuitbreaker | pybreaker | aiobreaker |
|---|---|---|---|---|
| Kaydırmalı pencere | O | X | X | X |
| Hata oranı tabanlı açılma | O | X | X | X |
| Birleştirilebilir kurallar | O | X | X | X |
| Kademeli kurtarma | O | X | X | X |
Bağlantılar
- GitHub: https://github.com/byExist/fluxgate
- Dokümantasyon: https://byExist.github.io/fluxgate/
Geri bildirimlerinizi bekliyorum!
Henüz yorum yok.