OSS探訪GitHubでログイン

同期・非同期APIとHTTP/2を同じ設計で扱うPython HTTP client

OSS規模スコア 287.4OSS健全度 100
スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
15,526
主要言語
Python
ライセンス
BSD-3-Clause
リポジトリ最終更新
2026/10/02
ページ内ナビ

概要

HTTPXはPython向けのHTTP client libraryです。requestsに近いAPIを保ちながら、同期・非同期client、HTTP/1.1・HTTP/2、connection pooling、timeout、streaming、proxy、WSGI/ASGI transportなどを提供します。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

同期と非同期のHTTP requestを同じclient modelで扱う

httpx.get()のような同期APIに加え、AsyncClientでasyncio/Trio環境から非同期requestを送信できます。cookie、authentication、multipart upload、streaming download、proxy等の一般的なHTTP client機能も備えます。

出典:[2]

HTTP/2・connection pool・timeout・application transportを組み合わせる

HTTP/2はhttpx[http2] extraで追加でき、Client/AsyncClientはkeep-aliveとconnection poolingを利用できます。WSGI/ASGI transportを使えば実networkを介さずapplicationへrequestするtest構成も可能です。

出典:[2][3]

向いている用途

外部API連携とasync I/Oを同じHTTP clientへ統一したいPython backendに向く

同期batch、async Web/API server、CLIなど複数の実行形態で同じHTTP client abstractionを共有したい場合に適します。requests互換に近い操作感からasync/HTTP2へ段階的に移行したいprojectにも向きます。

出典:[2]

導入前の確認

0.28.1はPython 3.8以上。HTTP/2 extraとTLS設定をversion固定で確認する

HTTPX 0.28.1はPython 3.8以上を要求し、HTTP/2はoptional dependencyです。0.28.1はverify=Falseとclient certificateを組み合わせたSSL caseの修正releaseです。TLS verify、client certificate、proxy等を使うsystemではtest environmentとproductionで同じoptionを固定して回帰確認してください。

出典:[3][4]

参考にした公式資料

  1. [1]encode/httpx — GitHub repository(2026-10-06)
  2. [2]HTTPX 0.28.1 — README(2026-10-06)
  3. [3]HTTPX 0.28.1 — pyproject.toml(2026-10-06)
  4. [4]HTTPX 0.28.1 release(2026-10-06)
  5. [5]HTTPX BSD-3-Clause license(2026-10-06)
編集部からの補足

requestsに近い操作感を保ちながらasyncとHTTP/2へ広げられるため、外部API連携を一つのclientに揃えたい場合に扱いやすいです。大量requestではtop-level helperの連打よりClient/AsyncClientを再利用し、poolとtimeoutを明示してください。

3ステップで試す

  1. 1

    HTTPX 0.28.1を導入する

    確認対象の最新安定版を固定して導入します。HTTPX 0.28.1はPython 3.8以上が必要です。

    python -m pip install "httpx==0.28.1"
  2. 2

    localhostに検証用HTTP serverを起動する

    Python標準libraryのHTTP serverをlocalhostだけで起動し、外部networkへrequestせずに確認できるようにします。

    python -m http.server 8000 --bind 127.0.0.1
  3. 3

    HTTPXからGET requestを送る

    別端末からClientを使ってrequestを送り、200 responseを確認します。Clientをcontext managerで使いconnection poolも確実にcloseします。

    python - <<'PY' import httpx with httpx.Client(timeout=5.0) as client: response = client.get('http://127.0.0.1:8000/') print(response.status_code) PY
公式READMEで確認

成長

成長の推移 · 直近30日

15,526 Stars

推移データを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • asyncio
  • http
  • python
  • trio
Stars
15,526
Forks
3,090
Watchers
155
Open Issues
140
Contributors
230
所有者種別
Organization
主要言語
Python
ライセンス
BSD-3-Clause
リポジトリ最終更新
2026/10/02

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?