【问题标题】:FastAPI async class dependenciesFastAPI 异步类依赖
【发布时间】:2020-12-10 23:08:30
【问题描述】:

在 FastAPI 中,当标准函数用作依赖项时,它可以声明为常规 def 函数或异步 async def 函数。 FastAPI 声称它在任何一种情况下都会做正确的事情。

但是,以这种方式创建的依赖项不像类依赖项那样对自动完成友好。此外,类依赖项有更好的声明语法,只需指定一次依赖项的类型,FastAPI 就会找出您指的是哪个依赖项。

def read_item(common: CommonQueryParam = Depends()):

但是类依赖需要执行异步操作作为其初始化的一部分。是否可以一起使用类依赖项和异步。显然,不能将__init__ 类函数声明为异步。有没有其他方法可以让它工作?

【问题讨论】:

    标签: python dependency-injection async-await python-asyncio fastapi


    【解决方案1】:

    正如您正确注意到的,__init__ 必须是同步的,您不能直接在其中调用 await。但是您可以将所有异步代码作为子依赖项并将其作为__init__ 的输入。 FastAPI 将正确处理这种异步依赖。

    示例:

    async def async_dep():
        await asyncio.sleep(0)
        return 1
    
    
    class CommonQueryParams:
        def __init__(self, a: int = Depends(async_dep)):
            self.a = a
    

    【讨论】:

      猜你喜欢
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多