Repolode
ross

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. 1

    pipでパッケージをインストールします

    pip install requests-futures
  2. 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 の数値は毎日更新されます。

関連プロジェクト