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?
다음 코드는 FastAPI 내에서 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())
수명 핸들러를 사용하여 httpx 클라이언트를 초기화하고 닫습니다.
위 내용은 FastAPI에서 동시 다운스트림 HTTP 요청을 할 때 httpx가 `h11._util.LocalProtocolError`를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!