在 FastAPI 中,你可以使用 yield 关键字来定义异步的依赖项函数。异步依赖项函数通常用于执行异步的操作,例如异步地查询数据库或执行异步的 HTTP 请求。

以下是一个使用 yield 的异步依赖项函数的示例:
from fastapi import Depends, FastAPI, HTTPException

app = FastAPI()

# 异步依赖项函数
async def get_token():
    # 在实际应用中,这里可以是异步的操作,比如异步地从数据库中获取令牌
    return "fake-async-token"

# 路径操作
@app.get("/items/")
async def read_items(token: str = Depends(get_token)):
    return {"token": token}

在这个例子中,get_token 是一个异步的依赖项函数。它使用 async def 声明,因为它可能执行异步操作。在实际应用中,这个函数可能会与数据库或其他异步服务进行交互。

当你在路径操作中使用 Depends 时,FastAPI 会自动检测到依赖项函数是否是异步的。如果是异步的,FastAPI 将在运行时使用 await 来等待依赖项函数的执行。在这个例子中,token 参数将包含 get_token 函数的返回值。

使用 yield 的异步依赖项函数还允许你在依赖项执行的前后添加一些逻辑。例如,你可以在 yield 之前执行一些初始化操作,而在 yield 之后执行清理操作。这种灵活性对于一些场景非常有用。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7389/FastAPI