プログラミング
httpx2
要約
HTTPX2は、Python向けの次世代HTTPクライアントライブラリです。HTTP/1.1とHTTP/2の両方をサポートし、同期および非同期APIを提供します。PydanticがHTTPXプロジェクトの管理を引き継ぎ、コミュニティの貢献を尊重しつつ、安定したメンテナンスとセキュリティアップデートを提供することを目指しています。pip install httpx2でインストールでき、コマンドラインクライアントも利用可能です。
全文翻訳
HTTPX2
Python向けの次世代HTTPクライアント。
HTTPX2は、Python向けのフル機能HTTPクライアントライブラリです。統合されたコマンドラインクライアントを備え、HTTP/1.1とHTTP/2の両方をサポートし、同期APIと非同期APIの両方を提供します。
注意
HTTPX2は、@lovelydinosaurとより広範なHTTPXコミュニティによって開始された素晴らしい作業の継続です。長年にわたりHTTPXに注がれたすべてのものに私たちは非常に感謝しています。それは現代のPythonエコシステムの基盤となる部分であり、このプロジェクトはそれなしには存在しなかったでしょう。
HTTPX自体が最近あまり活動が見られないため、PydanticはHTTPX2という名前で管理を引き継ぎ、多くの本番システムでクリティカルパスに位置するライブラリに対して、タイムリーなセキュリティアップデートを含む、確実にメンテナンスされたパスをユーザーに提供できるようにします。私たちの目標は、元のプロジェクトのデザインを尊重し、それに依存しているすべての人にとって安定した状態を保ち、慎重に進化させ続けることです。@lovelydinosaurおよび過去のすべての貢献者による、このような強固な基盤の構築に感謝します。💙
pipを使用してHTTPX2をインストールします:
pip install httpx2
それでは、始めましょう:
>>> import httpx2
>>> r = httpx2.get('https://www.example.org/')
>>> r
<Response [200 OK]>
>>> r.status_code
200
>>> r.headers['content-type']
'text/html; charset=UTF-8'
>>> r.text
'<!doctype html>
<html>
<head>
<title>Example Domain</title>...'
または、コマンドラインクライアントを使用します。
pip install 'httpx2[cli]'
# コマンドラインクライアントはオプションの依存関係です。
これにより、HTTPX2をコマンドラインから直接使用できるようになります:
httpx2 --help
機能
HTTPX2は、requestsの確立された使いやすさを基盤とし、以下を提供します:
* requestsと広く互換性のあるAPI。
* 統合されたコマンドラインクライアント。
* HTTP/1.1およびHTTP/2のサポート。
* 標準的な同期インターフェースですが、必要に応じて非同期サポートも提供します。
* WSGIアプリケーションまたはASGIアプリケーションに直接リクエストを送信する機能。
* すべての場所での厳格なタイムアウト。
* 完全に型アノテーション済み。
* 100%テストカバレッジ。
それに加えて、requestsのすべての標準機能...
* 国際化ドメイン名とURL
* Keep-Alive & コネクションプーリング
* Cookie永続化を備えたセッション
* ブラウザスタイルのSSL検証
* Basic/Digest認証
* エレガントなKey/Value Cookie
* 自動解凍
* 自動コンテンツデコード
* Unicodeレスポンスボディ
* マルチパートファイルアップロード
* HTTP(S)プロキシサポート
* コネクションタイムアウト
* ストリーミングダウンロード
* .netrcサポート
* チャンク化リクエスト
インストール
pipでインストールします:
pip install httpx2
または、オプションのHTTP/2サポートを含めるには、次を使用します:
pip install httpx2[http2]
ドキュメント
プロジェクトドキュメントは https://httpx2.pydantic.dev/ で入手できます。
すべての基本事項の概要については、クイックスタートを参照してください。
より高度なトピックについては、高度な使用法、非同期サポート、またはHTTP/2のセクションを参照してください。
開発者インターフェースには、包括的なAPIリファレンスが用意されています。
HTTPXと統合するツールを見つけるには、サードパーティパッケージを参照してください。
Pydantic Logfireによるオブザーバビリティ
HTTPXインストルメンテーションサポート付きでLogfireをインストールします:
pip install 'logfire[httpx]'
HTTPX2は、OpenTelemetry上に構築されたオブザーバビリティプラットフォームであるPydantic Logfireと、すぐに連携します。
1行で各リクエストをインストルメント化し、他の変更なしでトレース、タイミング、ステータスコードを取得できます:
import logfire
import httpx2
logfire.configure()
logfire.instrument_httpx()
httpx2.get("https://pydantic.dev/")
これは、明示的なhttpx2.Client()およびhttpx2.AsyncClient()インスタンスでも同様に機能し、クライアントを渡すことでインストルメンテーションを単一のクライアントにスコープできます:
logfire.instrument_httpx(client)
ヘッダーとボディも記録するには、capture_all=True を渡します。
オプションの完全なセットについては、Logfire HTTPXドキュメントを参照してください。
貢献
HTTPX2に貢献したい場合は、貢献ガイドを参照して開始方法を学んでください。
依存関係
HTTPX2プロジェクトは、これらの優れたライブラリに依存しています:
* httpcore2 - httpx2の基盤となるトランスポート実装。
* h11 - HTTP/1.1サポート。
* anyio - 構造化された並行処理プリミティブ。asyncioとtrioの両方をサポートするために使用されます。
* truststore - オペレーティングシステムの信頼ストアを使用したSSL検証。
* idna - 国際化ドメイン名サポート。
および、これらのオプションのインストール:
* h2 - HTTP/2サポート。(オプション、httpx2[http2]で)
* socksio - SOCKSプロキシサポート。(オプション、httpx2[socks]で)
* rich - リッチターミナルサポート。(オプション、httpx2[cli]で)
* click - コマンドラインクライアントサポート。(オプション、httpx2[cli]で)
* brotli または brotlicffi - "brotli"圧縮レスポンスのデコード。(オプション、httpx2[brotli]で)
* backports.zstd - Python 3.13以前での"zstd"圧縮レスポンスのデコード。(オプション、httpx2[zstd]で。Python 3.14以降では、zstdはstdlibのcompression.zstdモジュールで利用可能な場合にサポートされ、httpx2[zstd]エクストラは何もインストールしません。)
この作業の多くが従っているAPIレイアウトについてはrequestsに、低レベルのネットワーク詳細に関する多くの設計インスピレーションについてはurllib3に、多大なクレジットが与えられます。
HTTPX2はBSDライセンスのコードです。
— 🦋 — 愛情を込めて設計・作成されました —