ASGI-сервер передаёт запрос FastAPI, а event loop исполняет coroutine-задачи до точек ожидания. Пока одна задача ждёт неблокирующий I/O, цикл может выполнять другие.
Как работает асинхронность в FastAPI и asyncio под капотом?
ASGI-сервер передаёт запрос FastAPI, а event loop исполняет coroutine-задачи до точек ожидания. Пока одна задача ждёт неблокирующий I/O, цикл может выполнять другие.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
ASGI-сервер передаёт запрос FastAPI, а event loop исполняет coroutine-задачи до точек ожидания. Пока одна задача ждёт неблокирующий I/O, цикл может выполнять другие.
Обычный await не запускает отдельный поток и не гарантирует переключение, если ожидаемый объект уже готов. Async-драйверы регистрируют ожидание готовности сокета и возобновляют coroutine после события. Синхронные def-обработчики FastAPI обычно выполняет в thread pool; произвольная синхронная функция, вызванная прямо из async def, туда автоматически не переносится. Долгий CPU-код или блокирующий клиент останавливают loop. Нужны ограничения конкурентности, timeout и корректная отмена, а не только ключевое слово async.