FastAPI异步类依赖关系

弗拉德

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

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

def read_item(常见:CommonQueryParam = Depends()):

但是,在类依赖中,需要执行异步操作作为其初始化的一部分。是否可以同时使用类依赖和异步。显然,不能将类__init__函数声明为异步。还有另一种方法可以使它起作用吗?

alex_noname

如您所知,__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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章