Есть ли опыт с асинхронной разработкой
Что проверяют
Есть ли за словом «асинхронность» реальный проект и понимаете ли вы, где она помогает, а где вредит. Следом почти наверняка спросят, что будет, если внутри корутины вызвать блокирующую функцию, или чем asyncio отличается от потоков.
Как отвечать
Стройте ответ от своего проекта: что за сервис, почему выбрали асинхронный стек, что получилось. Цифры нужны ваши, из метрик: сколько одновременных запросов держал сервис, как изменилось время ответа или число инстансов.
Технический каркас, который стоит уложить в рассказ:
- модель:
asyncioэто один поток и цикл событий, корутины уступают управление наawait. Выигрыш есть только на I/O: сеть, база, очереди. CPU-задачи выносят вProcessPoolExecutor, а синхронную библиотеку без async-версии в поток черезasyncio.to_thread; - стек: FastAPI или aiohttp, один переиспользуемый клиент
httpx.AsyncClientилиaiohttp.ClientSessionна всё приложение,asyncpgили SQLAlchemy 2.0 в асинхронном режиме; - управление задачами:
asyncio.gatherилиTaskGroup(с Python 3.11), который отменяет остальные задачи при ошибке одной,asyncio.timeoutдля ограничения времени,Semaphoreдля лимита параллельных запросов; - тестирование и отладка:
pytest-asyncio, режим отладки цикла черезPYTHONASYNCIODEBUG=1, который подсвечивает медленные шаги и корутины, которые забыли дождаться.
Если опыта не было, так и скажите, а потом покажите понимание: где асинхронность дала бы выигрыш в вашем прошлом проекте и что вы уже пробовали сами, например небольшой сборщик данных на httpx.
Где спотыкаются
Вызывают блокирующий код внутри корутины: requests.get, time.sleep, синхронный драйвер базы. Цикл событий встаёт целиком, и все остальные запросы ждут.
Запускают тысячи задач через gather без ограничения. Итог: исчерпанный пул соединений, ответы 429 от внешнего API и рост памяти.
Путают асинхронность с параллельностью и говорят, что async ускоряет вычисления. На CPU-задачах он ничего не даёт, а создание новой сессии на каждый запрос, как во многих примерах из интернета, съедает выигрыш на установке соединений.