Repolode
danielfm

danielfm/pybreaker

依存先への呼び出しが失敗し続けたときに遮断し、システムの他の部分を保護する、Circuit BreakerパターンのPython実装です。

スター
701
フォーク
96
未解決の Issue
28
最終コミット
先月

これは何?

PyBreakerは、データベース、キュー、外部サービスなど、信頼性に欠ける連携先への呼び出しをラップします。設定した回数だけ連続して失敗すると回路が開き、以降の呼び出しは障害中の依存先を待たずに即座に失敗します。リセット時間が経過すると、次の呼び出しを通して依存先が復旧したかどうかを確認します。

Circuit Breakerはデコレーター、直接呼び出すメソッド、またはコンテキストマネージャーとして利用できます。業務上の例外を失敗回数の集計から除外する機能、複数のイベントリスナー、ジェネレーター関数の保護にも対応しています。プロパティやメソッドを使って、実行時に状態を確認・変更できます。

状態はメモリ内に保持することも、breakerごとに個別の名前空間を設けてRedisに保存することもできます。Tornadoの非同期コルーチンをサポートするオプション機能も含まれています。利用にはPython 3.10以降が必要です。

主な機能

  • 01失敗回数のしきい値とリセット時間を設定可能
  • 02型またはcallableを指定して、業務上の例外を失敗回数の集計から除外
  • 03Circuit Breakerごとに複数のイベントリスナーを登録可能
  • 04ジェネレーター関数を保護可能
  • 05Redisを使った状態保存に対応(オプション)
  • 06Tornadoの非同期呼び出しに対応(オプション)

ユースケース

  • データベースが利用できないときに、呼び出し元で障害が連鎖するのを防ぐ
  • 不安定なサードパーティ製HTTP APIへの呼び出しを即座に失敗させる
  • 本番サービスでCircuit Breakerの状態変化をログに記録したり、アラートを送信したりする

クイックスタート

  1. 1

    PyPIからPyBreakerをインストールする

    pip install pybreaker
  2. 2

    CircuitBreakerを作成し、関数を保護する

使う前に知っておきたいこと

  • Python 3.10以降が必要です。

収録されている特集

トピック

#circuit-breaker#resilience#fault-tolerance#python#redis#microservices

よくある質問

pybreaker とは?
依存先への呼び出しが失敗し続けたときに遮断し、システムの他の部分を保護する、Circuit BreakerパターンのPython実装です。 PyBreakerは、データベース、キュー、外部サービスなど、信頼性に欠ける連携先への呼び出しをラップします。設定した回数だけ連続して失敗すると回路が開き、以降の呼び出しは障害中の依存先を待たずに即座に失敗します。リセット時間が経過すると、次の呼び出しを通して依存先が復旧したかどうかを確認します。
pybreaker は無料で使えますか?ライセンスは?
pybreaker は BSD-3-Clause ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
pybreaker は今もメンテナンスされていますか?
半年以内に更新あり。pybreaker の最終コミットは 2026年9月25日 です。
pybreaker は何に使えますか?
データベースが利用できないときに、呼び出し元で障害が連鎖するのを防ぐ 不安定なサードパーティ製HTTP APIへの呼び出しを即座に失敗させる 本番サービスでCircuit Breakerの状態変化をログに記録したり、アラートを送信したりする
pybreaker のインストール方法は?
PyPIからPyBreakerをインストールする: pip install pybreaker CircuitBreakerを作成し、関数を保護する
pybreaker はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/danielfm/pybreaker

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

関数型コードにサーキットブレーカー、レート制限、リトライ、バルクヘッド、タイムリミッターを追加できる軽量なJava向けフォールトトレランスライブラリ。

バックエンド・API#java#fault-tolerance#circuit-breaker
1.1万+3 今週1541JavaApache-2.0更新 9 日前