FastAPI 没有异步行为

Flo*_*ker 6 python-3.x fastapi

我可能没有正确理解 FastAPI 中的异步概念。

我同时从两个客户端访问以下应用程序的根端点。我希望 FastAPIStarted在执行开始时连续打印两次:

from fastapi import FastAPI
import asyncio

app = FastAPI()

@app.get("/")
async def read_root():
    print('Started')
    await asyncio.sleep(5)
    print('Finished')
    return {"Hello": "World"}
Run Code Online (Sandbox Code Playgroud)

相反,我得到以下内容,它看起来非常非异步:

Started
Finished
INFO: ('127.0.0.1', 49655) - "GET / HTTP/1.1" 200
Started
Finished
INFO: ('127.0.0.1', 49655) - "GET / HTTP/1.1" 200
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

小智 7

您如何确保同时存在多个请求?

您的代码很好 - 尝试使用以下命令进行测试:

for n in {1..5}; do curl http://localhost:8000/ & ; done
Run Code Online (Sandbox Code Playgroud)

您的浏览器可能正在缓存对同一 URL 的后续请求。