Выбор ответа Middle FastAPI и Pydantic обновлено

Сколько раз вызывается зависимость

Вопрос

Эндпоинт зависит от current_user и get_session, а current_user тоже зависит от get_session. Сколько раз выполнится get_session за один запрос?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Один раз: результат кешируется в пределах запроса. FastAPI строит граф зависимостей запроса и по умолчанию кеширует результат каждой зависимости, поэтому эндпоинт и currentuser получат одну и ту же сессию.

Варианты ответа

  1. Два раза: по одному на каждое место, где она объявлена
  2. Один раз: результат кешируется в пределах запросаправильный ответ
  3. Один раз на всё приложение, как синглтон
  4. Зависит от порядка аргументов в сигнатуре эндпоинта

Разбор

FastAPI строит граф зависимостей запроса и по умолчанию кеширует результат каждой зависимости, поэтому эндпоинт и current_user получат одну и ту же сессию. Отключить кеш можно Depends(get_session, use_cache=False). Между запросами результат не переиспользуется: для этого нужен lifespan или синглтон.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.