標準の型ヒントを使ってAPIを構築できるPython製Webフレームワーク。自動バリデーション、OpenAPIドキュメント、高いパフォーマンスを備えています。
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
PyPIからパッケージをインストールします
pip install throttled-py - 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 の数値は毎日更新されます。
関連プロジェクト
RedisとMemcachedのAPI互換性を備え、両方のドロップイン置き換えを目指すインメモリデータストア。
スタートアップでの経験をもとに、FastAPIアプリを本番運用する際の実践的なベストプラクティスと規約をまとめたガイド。
Pythonで非同期WebサービスやAPIを構築するための、軽量なASGIフレームワーク兼ツールキット。
Python向けの分散タスクキュー。バックグラウンドジョブの実行や、ワーカーとメッセージブローカーをまたいだ処理のスケジューリングに対応します。
ローカルで動作し、操作性とプライバシーを重視するオープンソースのホームオートメーションプラットフォーム。Raspberry Piやローカルサーバーで動かせます。