在FastAPI中,当使用标准函数作为依赖项时,可以将其声明为常规def
函数或异步async def
函数。FastAPI声称在两种情况下都将做正确的事情。
但是,以这种方式创建的依赖项不像类依赖项那样易于自动完成。此外,类依赖项具有更好的声明语法,您只需指定一次依赖项的类型即可,FastAPI会找出您指的是哪种依赖项。
def read_item(常见:CommonQueryParam = Depends()):
但是,在类依赖中,需要执行异步操作作为其初始化的一部分。是否可以同时使用类依赖和异步。显然,不能将类__init__
函数声明为异步。还有另一种方法可以使它起作用吗?
如您所知,__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] 删除。
我来说两句