@app.on_event("startup"), как можно вызовать открытую бд без глобал функций?
https://fastapi.tiangolo.com/tutorial/sql-databases/
https://t.me/advice17/14
Не надо как в доке делать
Оно депрекейтед, переписывай https://fastapi.tiangolo.com/advanced/events/
Чё вы ему говна советуете? Есть инъекции зависимостей для сессии
https://fastapi.tiangolo.com/em/advanced/events/
https://t.me/ru_python/2187001
А где зависимости оверрайдить, как не в лайфспан контекст менеджере?
В фабрике приложения
Тут подробно написано что это такое и как жевать, читай
Можешь плиз выделить мышкой "фабрику приложения" из статьи и переслать сюда?
У тебя мейн есть в любом случае, в asgi есть фабрики приложений, ты можешь глобалом их инжектнуть, но не рекомендую, так как в тестах нужно будет оверрайдить настройки и из функции-фабрики это проще делается
https://www.uvicorn.org/#application-factories
def create_app(): app = FastApi() app.dependency_overrides[SomeStub] = real_factory return app против @asynccontextmanager async def my_overrides(app: FastAPI): app.dependency_overrides[SomeStub] = real_factory yield def create_app(): app = FastApi(lifespan=my_overrides) return app
Зачем тебе контекстменеджер лишний?
Дёргать асинк-методы при стартапе конечно же
Где там асинк метод? Даже в turtoise фабрика сессии синхронно делается
httpx поддерживает синк запросы
И httpx тоже не хочу, у меня хайлоад
request курит в сторонке...
Ну, хз хз, ссылку на бенчмарк в студию https://gist.github.com/florimondmanca/fbc85b58e9ce61e74b73df1e42829838
Обсуждают сегодня