3 poin oleh byexist 2026-01-05 | Belum ada komentar. | Bagikan ke WhatsApp

Saat menggunakan library Circuit Breaker Python yang sudah ada (circuitbreaker, pybreaker, dan lainnya), ada beberapa hal yang terasa kurang memuaskan.

  • Hanya menggunakan penghitung kegagalan beruntun: sekali berhasil, penghitung di-reset sehingga sulit mendeteksi layanan yang tidak stabil
  • Saat pemulihan hanya mengizinkan satu panggilan uji: kurang memadai untuk hal seperti cache warming

Terinspirasi dari dukungan operator Django Permission dan pengelolaan window di resilience4j.

Instalasi

pip install fluxgate  

Penggunaan dasar

from fluxgate import CircuitBreaker  
  
cb = CircuitBreaker(name="external_api")  
  
@cb  
def call_api():  
    return requests.get("https://api.example.com/data";)  

Nilai default: trip jika 50% dari 100 panggilan terakhir gagal, lalu mencoba pulih kembali setelah 60 detik

Dukungan asinkron

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";)  

Fitur utama

Sliding window + trip berbasis tingkat kegagalan

from fluxgate import CircuitBreaker  
from fluxgate.trippers import MinRequests, FailureRate, FailureStreak  
  
cb = CircuitBreaker(  
    name="api",  
    tripper=FailureStreak(5) | (MinRequests(100) & FailureRate(0.5))  
)  

→ Trip saat gagal 5 kali berturut-turut, atau saat 50% dari 100 panggilan terakhir gagal

Pemulihan bertahap (RampUp)

from fluxgate.permits import RampUp  
  
cb = CircuitBreaker(  
    name="api",  
    permit=RampUp(initial=0.1, final=1.0, duration=60.0)  
)  

→ Saat pemulihan, traffic dimulai dari 10% lalu meningkat bertahap hingga 100% selama 60 detik

Perbandingan fitur dengan library yang sudah ada

Fitur fluxgate circuitbreaker pybreaker aiobreaker
Sliding window O X X X
Trip berbasis tingkat kegagalan O X X X
Aturan yang dapat dikombinasikan O X X X
Pemulihan bertahap O X X X

Tautan

Mohon banyak masukan dan feedback!

Belum ada komentar.

Belum ada komentar.