Faire des requêtes HTTP en aval avec Uvicorn/FastAPI
Problème :
Lors de l'envoi simultané de plusieurs requêtes vers un point de terminaison API hébergé sur Uvicorn/FastAPI, une erreur est rencontré :
h11._util.LocalProtocolError: can't handle event type ConnectionClosed when role=SERVER and state=SEND_RESPONSE
Solution :
Pour résoudre ce problème et gérer efficacement les requêtes HTTP en aval dans FastAPI, envisagez d'utiliser httpx au lieu du bibliothèque de requêtes traditionnelles.
Pourquoi utiliser httpx ?
Exemple d'utilisation :
Le code suivant démontre l'utilisation de httpx dans une FastAPI point de terminaison :
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())
Conseils supplémentaires :
En adoptant httpx et en mettant en œuvre les meilleures pratiques suggérées, vous pouvez gérer efficacement les requêtes HTTP en aval au sein de votre application Uvicorn/FastAPI.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!