ホームページ > バックエンド開発 > Python チュートリアル > FastAPI で同時ダウンストリーム HTTP リクエストを行う場合、httpx はどのように `h11._util.LocalProtocolError` を解決できますか?

FastAPI で同時ダウンストリーム HTTP リクエストを行う場合、httpx はどのように `h11._util.LocalProtocolError` を解決できますか?

Barbara Streisand
リリース: 2024-12-28 07:07:24
オリジナル
107 人が閲覧しました

How Can httpx Solve `h11._util.LocalProtocolError` When Making Concurrent Downstream HTTP Requests in FastAPI?

Uvicorn/FastAPI を使用したダウンストリーム HTTP リクエストの作成

問題:

複数の同時送信時Uvicorn/FastAPI でホストされている API エンドポイントへのリクエスト、エラーが発生しました:

h11._util.LocalProtocolError: can't handle event type ConnectionClosed when role=SERVER and state=SEND_RESPONSE
ログイン後にコピー

解決策:

この問題を解決し、FastAPI 内でダウンストリーム HTTP リクエストを効率的に処理するには、httpx の代わりに

httpx

を使用することを検討してください。従来のリクエスト ライブラリ。

使用する理由httpx?
  • 非同期 API:
  • httpx は非同期 API を提供し、HTTP(s) リクエストの非同期処理を可能にします。
  • 接続プーリング:
  • httpx.AsyncClient() インスタンスは、同じホストでパフォーマンスを最適化します。
  • ストリーム サポート:
httpx は、受信リクエストと送信リクエストの両方に対する組み込みのストリーミング応答処理を提供します。

使用例:

from fastapi import FastAPI, StreamingResponse
from httpx import AsyncClient

app = FastAPI()

@app.on_event("startup")
async def startup_event():
    app.state.client = AsyncClient()

@app.on_event("shutdown")
async def shutdown_event():
    await app.state.client.aclose()

@app.get("/")
async def home():
    client = app.state.client
    req = client.build_request("GET", "https://www.example.com/")
    r = await client.send(req, stream=True)
    return StreamingResponse(r.aiter_raw())
ログイン後にコピー
次のコードは、FastAPI 内での httpx の使用を示しています。エンドポイント:

追加のヒント:
  • ライフスパン ハンドラーを使用して、httpx クライアントを初期化して閉じます。
  • ストリーミングの使用を検討してください。サーバー側でのメモリ消費を回避するための応答。
制限を使用して接続プール サイズを制御するhttpx クライアントのキーワード引数。

httpx を採用し、推奨されるベスト プラクティスを実装することにより、Uvicorn/FastAPI アプリケーション内でダウンストリーム HTTP リクエストを効果的に処理できます。

以上がFastAPI で同時ダウンストリーム HTTP リクエストを行う場合、httpx はどのように `h11._util.LocalProtocolError` を解決できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート