Передать экземпляр объекта на маршрутизатор FastAPI - PullRequest
0 голосов
/ 22 января 2020

Что не так с реализацией передачи класса в качестве зависимости в маршрутизаторе 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

@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
...