Эндпоинт на FastAPI обрабатывает запрос за 2 секунды из-за внешнего API. При 50 одновременных пользователях сервис начинает тормозить. Что будете проверять в первую очередь и как исправите?

Сначала проверю, не вызывается ли блокирующий HTTP-клиент внутри async def, а затем — ограничения пула соединений, timeouts и лимиты внешнего API. Две секунды I/O не должны последовательно блокировать весь event loop.

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

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

Сначала проверю, не вызывается ли блокирующий HTTP-клиент внутри async def, а затем — ограничения пула соединений, timeouts и лимиты внешнего API. Две секунды I/O не должны последовательно блокировать весь event loop.

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

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

Сначала проверю, не вызывается ли блокирующий HTTP-клиент внутри async def, а затем — ограничения пула соединений, timeouts и лимиты внешнего API. Две секунды I/O не должны последовательно блокировать весь event loop.

Неблокирующий клиент нужно переиспользовать с ограниченным пулом, а не создавать на каждый запрос. Одновременно измерю event-loop lag, очередь запросов и время самого провайдера. При перегрузке нужны ограничение конкурентности, backpressure и разумные retries, иначе повторные вызовы усугубят ситуацию. Добавление workers может временно скрыть блокировку, но не устраняет причину. CPU-работу и синхронные зависимости проверяют отдельно.

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

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

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

Подробнее