Membuat Permintaan HTTP Hilir dengan Uvicorn/FastAPI
Isu:
Apabila menghantar berbilang serentak permintaan ke titik akhir API yang dihoskan pada Uvicorn/FastAPI, ralat adalah dihadapi:
h11._util.LocalProtocolError: can't handle event type ConnectionClosed when role=SERVER and state=SEND_RESPONSE
Penyelesaian:
Untuk menyelesaikan isu ini dan mengendalikan permintaan HTTP hiliran dengan cekap dalam FastAPI, pertimbangkan untuk menggunakan httpx dan bukannya perpustakaan permintaan tradisional.
Mengapa menggunakan httpx?
Contoh Penggunaan:
Kod berikut menunjukkan penggunaan httpx dalam FastAPI titik akhir:
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())
Petua Tambahan:
Dengan mengguna pakai httpx dan melaksanakan amalan terbaik yang dicadangkan, anda boleh mengendalikan permintaan HTTP hiliran dengan berkesan dalam aplikasi Uvicorn/FastAPI anda.
Atas ialah kandungan terperinci Bagaimanakah httpx Boleh Menyelesaikan `h11._util.LocalProtocolError` Apabila Membuat Permintaan HTTP Hilir Serentak dalam FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!