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