Если две синхронные ручки FastAPI с time.sleep(5) вызываются параллельно, за сколько они отработают?

Если это обработчики обычного def и в thread pool есть два свободных места, оба запроса завершатся примерно за 5 секунд, а не последовательно за 10. Точное время зависит от загрузки.

Короткий ответ

Что ответить на собеседовании

Если это обработчики обычного def и в thread pool есть два свободных места, оба запроса завершатся примерно за 5 секунд, а не последовательно за 10. Точное время зависит от загрузки.

Подробный разбор

Ответ с пояснениями

Если это обработчики обычного def и в thread pool есть два свободных места, оба запроса завершатся примерно за 5 секунд, а не последовательно за 10. Точное время зависит от загрузки.

FastAPI переносит синхронные path operations в thread pool. time.sleep блокирует занятый поток, но не весь event loop и освобождает GIL на ожидании. Если написать async def и внутри напрямую вызвать time.sleep, один worker loop будет блокироваться. Исчерпанный пул, middleware и другие ресурсы могут добавить ожидание.

Источник: fastapi.tiangolo.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее