Сначала проверю, не вызывается ли блокирующий HTTP-клиент внутри async def, а затем — ограничения пула соединений, timeouts и лимиты внешнего API. Две секунды I/O не должны последовательно блокировать весь event loop.
Эндпоинт на FastAPI обрабатывает запрос за 2 секунды из-за внешнего API. При 50 одновременных пользователях сервис начинает тормозить. Что будете проверять в первую очередь и как исправите?
Сначала проверю, не вызывается ли блокирующий 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-работу и синхронные зависимости проверяют отдельно.