4

在 FastAPI 路由器中将类实例作为依赖项的实现有什么问题还是一个错误?1)我已经定义了具有依赖关系的路由器

app = FastAPI()
dbconnector_is = AsyncDBPool(conn=is_cnx, loop=None)
app.include_router(test_route.router, dependencies=[Depends(dbconnector_is)])


@app.on_event('startup')
async def startup():
    app.logger = await AsyncLogger().getlogger(log)
    await app.logger.warning('Webservice is starting up...')
    await app.logger.info("Establishing RDBS Integration Pool Connection...")
    await dbconnector_is.connect()

@app.on_event('startup')
async def startup():
    await app.logger.getlogger(log)
    await app.logger.warning('Webservice is starting up...')
    await dbconnector_is.connect()

路由器

@router.get('/test')
async def test():
    data = await dbconnector_is.callproc('is_processes_get', rows=-1, values=[None, None])
    return Response(json.dumps(data, default=str))

用于将其实例作为可调用传递的自定义类。


class AsyncDBPool:

    def __init__(self, conn: dict, loop: None):
        self.conn = conn
        self.pool = None
        self.connected = False
        self.loop = loop

    def __call__(self):
        return self

    async def connect(self):
        while self.pool is None:
            try:
                self.pool = await aiomysql.create_pool(**self.conn, loop=self.loop, autocommit=True)
            except aiomysql.OperationalError as e:
                await asyncio.sleep(1)
                continue
        else:
            return self.pool

当我发送请求时,我收到此错误。

data = await dbconnector_is.callproc('is_processes_get', rows=-1, values=[None, None])
NameError: name 'dbconnector_is' is not defined
4

0 回答 0