Downstream-HTTP-Anfragen mit Uvicorn/FastAPI stellen
Problem:
Beim gleichzeitigen Senden mehrerer Bei Anfragen an einen auf Uvicorn/FastAPI gehosteten API-Endpunkt wird ein Fehler angezeigt aufgetreten:
h11._util.LocalProtocolError: can't handle event type ConnectionClosed when role=SERVER and state=SEND_RESPONSE
Lösung:
Um dieses Problem zu beheben und nachgelagerte HTTP-Anfragen innerhalb von FastAPI effizient zu verarbeiten, sollten Sie httpx anstelle von verwenden traditionelle Anforderungsbibliothek.
Warum verwenden httpx?
Beispielverwendung:
Der folgende Code demonstriert die Verwendung von httpx innerhalb einer FastAPI Endpunkt:
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())
Zusätzliche Tipps:
Durch die Einführung von httpx und die Implementierung der empfohlenen Best Practices können Sie nachgelagerte HTTP-Anfragen innerhalb Ihrer Uvicorn/FastAPI-Anwendung effektiv verarbeiten.
Das obige ist der detaillierte Inhalt vonWie kann httpx „h11._util.LocalProtocolError' lösen, wenn in FastAPI gleichzeitige Downstream-HTTP-Anfragen gestellt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!