所以,我想我什么async def
都懂def
。我有这段代码,我正在运行它uvicorn main:app
import time
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
print("Hitted Root")
time.sleep(10)
return {"message": "Hello World"}
@app.get("/hi")
def root_hi():
print("Hitted Root Hi")
time.sleep(10)
如果我/hi
同时访问/
。打印语句立即出现,它们每个大约在 10 秒后结束,这必须意味着它们同时在不同的线程中开始
但是,如果我打开两个请求,/hi
第一个结束,然后第二个开始,即我看到第一个的 print 语句,然后 10 秒后看到第二个的 print 语句,这一定意味着它们没有在不同的线程上运行。
我想知道为什么会这样,如果这是对不同端点的请求在不同线程中运行但对同一端点的请求一个接一个运行的默认行为。我还想知道是否有一种方法可以使对同一端点的请求在不同的线程中运行,而at the same time
无需使用多个 uvicorn 工作者。