<b>asyncio ломается не в event loop, а в том, как вы смешиваете ожидание и блокировки</b>
В `asyncio` главная ошибка — считать, что `async def` автоматически делает код быстрым. Нет: если внутри сидит `time.sleep()`, тяжёлый `requests` или CPU-цикл, вы просто стопорите весь loop.
Три правила, которые спасают проекты:
• всё сетевое и I/O — через `await`;
• блокирующее выносите в `asyncio.to_thread()` или отдельный worker;
• не держите `await` внутри критической секции дольше, чем нужно.
Ещё одна типовая ловушка — запускать много задач без ограничений. `gather()` удобен, но без `Semaphore` легко устроить шип пик по памяти, соединениям и лимитам внешнего API. Для интеграций лучше сначала задать потолок параллелизма, потом масштабировать.
Если видите «async code», ищите два места: где реально есть `await`, и где код тихо работает синхронно. Обычно именно там и лежит узкое горло.
Python Web & Scripts — Django, FastAPI, скрипты
@python_web_scripts
<b>asyncio ломается не в event loop, а в том, как вы смешиваете ожидание и блокировки</b>
Этот пост опубликован в Telegram-канале Python Web & Scripts — Django, FastAPI, скрипты. Подписаться можно по ссылке: @python_web_scripts.