3 puan yazan byexist 2026-01-05 | Henüz yorum yok. | WhatsApp'ta paylaş

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

Geri bildirimlerinizi bekliyorum!

Henüz yorum yok.

Henüz yorum yok.