Если это обработчики обычного def и в thread pool есть два свободных места, оба запроса завершатся примерно за 5 секунд, а не последовательно за 10. Точное время зависит от загрузки.
Если две синхронные ручки FastAPI с time.sleep(5) вызываются параллельно, за сколько они отработают?
Если это обработчики обычного 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.