関数型コードにサーキットブレーカー、レート制限、リトライ、バルクヘッド、タイムリミッターを追加できる軽量なJava向けフォールトトレランスライブラリ。
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
PyPIからPyBreakerをインストールする
pip install pybreaker - 2
CircuitBreakerを作成し、関数を保護する
使う前に知っておきたいこと
- Python 3.10以降が必要です。
収録されている特集
トピック
よくある質問
- 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 の数値は毎日更新されます。
関連プロジェクト
高負荷に耐える機能を備え、.api仕様からコードを生成するgoctlを同梱したGo製Web・RPCマイクロサービスフレームワーク。
Spring CloudアプリケーションをTencentのPolarisと連携させ、サービスディスカバリーとガバナンスを実現するSpring Cloud実装です。
コードをほとんど変更せず、マイクロサービスにトラフィック管理、セキュリティ、可観測性を追加するオープンソースのサービスメッシュです。
純粋なGoで書かれた軽量なインスタントメッセージングバックエンド。WebSocketとTCPでの個人間メッセージやルーム内ブロードキャストに対応します。
Javaバックエンド開発者向けの面接対策ナレッジベース。並行処理、分散システム、マイクロサービス、ビッグデータを扱います。