Pythonで非同期WebサービスやAPIを構築するための、軽量なASGIフレームワーク兼ツールキット。
ross/requests-futures
concurrent.futuresを使ってHTTPリクエストを非同期に送信する、Pythonのrequestsライブラリ向け小型アドオンです。
- スター
- 2,222
- フォーク
- 158
- 未解決の Issue
- 1
- 最終コミット
- 16 日前
これは何?
requests-futuresは、人気のPythonライブラリrequestsに非同期インターフェースを追加します。呼び出しごとに処理をブロックする代わりに、FuturesSessionはFutureオブジェクトを返すため、リクエストをバックグラウンドで実行し、レスポンスが必要になった時点でresult()を呼び出せます。それ以外のAPIはrequests.Sessionに準じており、例外は呼び出し時ではなくresult()から送出されます。
デフォルトでは8ワーカーのThreadPoolExecutorを使用し、代わりにProcessPoolExecutorを指定してプロセスベースの並行処理を行うこともできます。セッションをコンテキストマネージャーとして閉じると、まだ開始していないキュー内のリクエストはキャンセルされます。Futureには追加データを付加でき、非推奨となったbackground_callbackの代替としてhooksを利用できます。
デフォルトのexecutorはワーカースレッド間で1つのrequests.Sessionを共有しますが、Sessionはスレッドセーフではありません。そのため、実行中のリクエスト間で共有されるCookieやヘッダーを変更する際は注意が必要です。Python 3.10以降が必要です。
主な機能
- 01使い慣れたrequests.Session APIからFutureオブジェクトを返します。
- 02デフォルトでは8ワーカーのThreadPoolExecutorを使用し、ProcessPoolExecutorにも対応しています。
- 03セッションを閉じる際、まだ開始していないキュー内のリクエストをキャンセルします。
- 04リクエストを識別・追跡するためのカスタムデータをFutureに付加できます。
- 05非推奨となったbackground_callbackの代替としてhooksを利用できます。
ユースケース
- Pythonスクリプトから、互いに独立した多数のURLを並列に取得する。
- 既存のrequestsベースのコードベースに、最小限の変更でバックグラウンドHTTP呼び出しを追加する。
- リクエストごとのメモリ使用量を考慮して、プロセスプールで大量のリクエストを実行する。
クイックスタート
- 1
pipでパッケージをインストールします
pip install requests-futures - 2
FuturesSessionを作成してリクエストを送信し、各futureでresult()を呼び出してレスポンスを取得します
使う前に知っておきたいこと
- Python 3.10以降が必要です。
- デフォルトのexecutorは、スレッドセーフではないrequests.Sessionをスレッド間で共有します。
- プロジェクトのメタデータにライセンスが明確に記載されていません。
トピック
よくある質問
- requests-futures とは?
- concurrent.futuresを使ってHTTPリクエストを非同期に送信する、Pythonのrequestsライブラリ向け小型アドオンです。 requests-futuresは、人気のPythonライブラリrequestsに非同期インターフェースを追加します。呼び出しごとに処理をブロックする代わりに、FuturesSessionはFutureオブジェクトを返すため、リクエストをバックグラウンドで実行し、レスポンスが必要になった時点でresult()を呼び出せます。それ以外のAPIはrequests.Sessionに準じており、例外は呼び出し時ではなくresult()から送出されます。
- requests-futures は無料で使えますか?ライセンスは?
- requests-futures は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- requests-futures は今もメンテナンスされていますか?
- 活発にメンテナンス中。requests-futures の最終コミットは 2026年10月5日 です。
- requests-futures は何に使えますか?
- Pythonスクリプトから、互いに独立した多数のURLを並列に取得する。 既存のrequestsベースのコードベースに、最小限の変更でバックグラウンドHTTP呼び出しを追加する。 リクエストごとのメモリ使用量を考慮して、プロセスプールで大量のリクエストを実行する。
- requests-futures のインストール方法は?
- pipでパッケージをインストールします: pip install requests-futures FuturesSessionを作成してリクエストを送信し、各futureでresult()を呼び出してレスポンスを取得します
- requests-futures はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/ross/requests-futures
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
HTTP/1、HTTP/2、WebSocketの通信を調査できる、コンソール・コマンドライン・Webインターフェースを備えたTLS対応の対話型HTTPプロキシ。
暗号資産、株式、FX、先物の市場データ、テクニカル分析、スクリーナー、バックテスト、センチメント分析に使える39個のツールを提供するMCPサーバー。
HTTP/WebSocketサービスを構築するための、高速で使いやすいFlask風C++マイクロフレームワーク。ヘッダーオンリーで利用できます。
各ターンでLLMのコンテキストを関連情報に絞り、ビジネスルールやガイドライン、手順を一貫して守る顧客対応AIエージェントを構築するPythonフレームワーク。
HTML、CSS、JavaScriptを書かずに、ブラウザベースのWeb UIや小規模アプリを構築できるPythonフレームワーク。