Выбор ответа Middle FastAPI и Pydantic обновлено
Сколько раз вызывается зависимость
Вопрос
Эндпоинт зависит от current_user и get_session, а current_user тоже зависит от get_session. Сколько раз выполнится get_session за один запрос?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Один раз: результат кешируется в пределах запроса. FastAPI строит граф зависимостей запроса и по умолчанию кеширует результат каждой зависимости, поэтому эндпоинт и currentuser получат одну и ту же сессию.
Варианты ответа
- Два раза: по одному на каждое место, где она объявлена
- Один раз: результат кешируется в пределах запросаправильный ответ
- Один раз на всё приложение, как синглтон
- Зависит от порядка аргументов в сигнатуре эндпоинта
Разбор
FastAPI строит граф зависимостей запроса и по умолчанию кеширует результат каждой зависимости, поэтому эндпоинт и current_user получат одну и ту же сессию. Отключить кеш можно Depends(get_session, use_cache=False). Между запросами результат не переиспользуется: для этого нужен lifespan или синглтон.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.