Я пытаюсь создать простой API Restful, используя aiohttp и Gino.
Внутри моего класса конечной точки я получил следующее:
class ListEndpoint(Endpoint):
def __init__(self, model):
super().__init__()
self.model = model
async def get(self) -> Response:
async with db.with_bind(DB_ADDRESS):
obj_list = await self.model.query.gino.all()
if not obj_list:
return Response(
status=404,
body=json.dumps({'Not found': 404}),
content_type='application/json'
)
data = await ModelSerializer(obj_list).to_json()
return Response(
status=200, body=data, content_type='application/json'
)
Это единственное место, где я называю Джино. Это мой main.py:
from aiohttp.web import Application, run_app
from models import Country
from resource import GenericResource
app = Application()
countries = GenericResource('countries', Country)
countries.register(app.router)
if __name__ == '__main__':
run_app(app)
Когда я вызываю маршрут с запросом GET, я получаю следующую ошибку:
Движок Gino не инициализирован.
И это терпит неудачу:
async with db.with_bind(DB_ADDRESS):
obj_list = await self.model.query.gino.all()
Это плохое место для привязки? Или, как я могу думать о причинах этой проблемы, заключается в том, что этот код переходит в цикл обработки событий и не имеет времени для привязки, когда установлен obj_list.