Repolode
ZhuoZhuoCrayon

ZhuoZhuoCrayon/throttled-py

Redisまたはインメモリストレージを利用し、固定ウィンドウ、スライディングウィンドウ、トークンバケット、リーキーバケット、GCRAに対応するPythonレート制限ライブラリ。

スター
649
フォーク
36
未解決の Issue
10
最終コミット
4 日前

これは何?

throttled-pyは、関数呼び出しやAPIリクエストをレート制限するPythonライブラリです。5つのアルゴリズム(Fixed Window、Sliding Window、Token Bucket、Leaky Bucket、GCRA)に対応し、`using`パラメーターで選択できます。クォータは「100/s burst 200」のような読みやすい文字列で指定できます。

同期・非同期のAPIを備え、通常の関数呼び出し、デコレーター、コンテキストマネージャーとして利用できます。カウンターは有効期限付きのインメモリLRUストア、またはスタンドアロン、Sentinel、ClusterモードのRedisに保存されます。呼び出しはすぐに返すことも、タイムアウトまで待機して再試行することもできます。

FastAPIとFlask向けの公式インテグレーションを備え、デコレーターによる制限設定、RateLimit-*レスポンスヘッダー、HTTP 429の処理に対応します。また、OpenTelemetryフックのオプションとMCP Python SDKとの連携も提供します。

主な機能

  • 015種類のレート制限アルゴリズムに対応:Fixed Window、Sliding Window、Token Bucket、Leaky Bucket、GCRA。
  • 02同期・非同期APIに対応し、関数呼び出し、デコレーター、コンテキストマネージャーとして利用可能。
  • 03スタンドアロン、Sentinel、ClusterモードのRedisストレージに加え、有効期限とLRUによる削除に対応したインメモリストアを提供。
  • 04タイムアウトを設定できる、待機して再試行するモード。
  • 05HTTP 429の処理に対応した、FastAPIとFlask向けの公式インテグレーション。

ユースケース

  • リクエストクォータを設けているサードパーティAPIへの呼び出しを抑制する。
  • FastAPIまたはFlaskのサービスで、ユーザーやIPごとのリクエスト数を制限する。
  • Redisを使って複数のアプリケーションインスタンス間でレート制限の状態を共有する。
  • 非同期Pythonワーカーでリクエストのバーストを制御する。

クイックスタート

  1. 1

    PyPIからパッケージをインストールします

    pip install throttled-py
  2. 2

    Quick Startの例にあるように、Throttledインスタンスを作成し、コード内でlimit()を呼び出します

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

  • 現行のv3.x系列ではPython 3.10以降が必要です。Python 3.8および3.9ではthrottled-py<3.0.0を使用してください。
  • Redisバックエンドを使用するには、オプションのredis extraと、起動中のRedisサーバーが必要です。

トピック

よくある質問

throttled-py とは?
Redisまたはインメモリストレージを利用し、固定ウィンドウ、スライディングウィンドウ、トークンバケット、リーキーバケット、GCRAに対応するPythonレート制限ライブラリ。 throttled-pyは、関数呼び出しやAPIリクエストをレート制限するPythonライブラリです。5つのアルゴリズム(Fixed Window、Sliding Window、Token Bucket、Leaky Bucket、GCRA)に対応し、`using`パラメーターで選択できます。クォータは「100/s burst 200」のような読みやすい文字列で指定できます。
throttled-py は無料で使えますか?ライセンスは?
throttled-py は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
throttled-py は今もメンテナンスされていますか?
活発にメンテナンス中。throttled-py の最終コミットは 2026年10月18日 です。
throttled-py は何に使えますか?
リクエストクォータを設けているサードパーティAPIへの呼び出しを抑制する。 FastAPIまたはFlaskのサービスで、ユーザーやIPごとのリクエスト数を制限する。 Redisを使って複数のアプリケーションインスタンス間でレート制限の状態を共有する。 非同期Pythonワーカーでリクエストのバーストを制御する。
throttled-py のインストール方法は?
PyPIからパッケージをインストールします: pip install throttled-py Quick Startの例にあるように、Throttledインスタンスを作成し、コード内でlimit()を呼び出します
throttled-py はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/ZhuoZhuoCrayon/throttled-py

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

関連プロジェクト