問題陳述:
問題陳述:FastAPI 提供並行功能,但API透過多個瀏覽器標籤同時發出的呼叫將依序而不是並行處理。當使用 def 而不是 async def 定義端點時,就會出現此行為。
分析與解決方案:FastAPI 利用外部執行緒池來處理使用 def 定義的端點。當此類端點收到請求時,FastAPI 在執行緒池之外的單獨執行緒中執行它。然而,一次只能處理一個請求,導致順序請求處理而不是真正的並行性。
@app.get("/ping") async def ping(request: Request): print("Hello") await asyncio.sleep(5) print("bye") return {"ping": "pong!"}
要解決此問題,請確保定義不需要阻塞 I/O 綁定操作的端點使用 async def 來利用 FastAPI 的平行功能。以下是可以並行執行的端點範例:
以上是為什麼我的 FastAPI 應用程式按順序而不是並行處理並發請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!