FastAPI 中的异步实际上做了什么?

fil*_*ips 5 asynchronous python-3.x async-await fastapi

我有两个脚本:

from fastapi import FastAPI
import asyncio

app = FastAPI()

@app.get("/")
async def root():
    a = await asyncio.sleep(10)
    return {'Hello': 'World',}
Run Code Online (Sandbox Code Playgroud)

第二个:

from fastapi import FastAPI
import time
  
app = FastAPI()

@app.get("/")
def root():
    a = time.sleep(10)
    return {'Hello': 'World',}
Run Code Online (Sandbox Code Playgroud)

请注意,第二个脚本不使用async. 两个脚本的作用相同,起初我认为脚本的好处async是它允许同时多个连接,但是在测试第二个代码时,我也能够运行多个连接。结果是相同的,性能是相同的,我不明白为什么我们要使用async方法。非常感谢您的解释。

rom*_*oma 3

FastAPI 文档:

您可以根据需要在路径操作函数中混合使用 def 和 async def,并使用最适合您的选项来定义每一种。FastAPI 会用它们做正确的事情。

无论如何,在上述任何一种情况下,FastAPI 仍然会异步工作并且速度非常快。

两个端点都将异步执行,但如果您异步定义端点函数,它将允许您使用await关键字并使用异步第三方库