с fastapi? Я недавно писал про это, начал переходить, возникли некоторые проблемы.
Как вы передаете сессию в хендлеры? Я сейчас реализовал что-то похожее на https://github.com/mfreeborn/fastapi-sqlalchemy, только для версии 1.4
В саму документацию fastapi хотят добавить пример использования, там через Depends: https://github.com/tiangolo/fastapi/pull/2331
С моим первым вариантом, иногда (далеко не всегда, кажется, когда одновременно исполняется два запроса), возникает ошибка:
asyncpg.InterfaceError: cannot perform operation: another operation is in progress
Это при запросе к базе внутри хендлера, хотя по идее никаких других запросов в данном контексте не происходит (только если, у меня есть Depends на класс, который реализует аутентификацию, и там есть запрос к бд)
Если я вручную создаю новый контекст (with db():, как в fastapi-sqlalchemy), то оно вроде бы работает
Но по-моему это не лучший способ.
Просто когда раньше использовался gino, там был глобальный объект бд, который сам избегал этих ошибок как-то.
Как это правильней делать?
Депендс вроде норм
Просто у меня есть отдельный файл с утилитами для работы с бд, получается сессию везде с собой таскать?
Обсуждают сегодня