Python Web & Scripts — Django, FastAPI, скрипты

<b>asyncio ломается не в event loop, а в том, как вы смешиваете ожидание и блокировки</b>

<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`, и где код тихо работает синхронно. Обычно именно там и лежит узкое горло.
Этот пост опубликован в Telegram-канале Python Web & Scripts — Django, FastAPI, скрипты. Подписаться можно по ссылке: @python_web_scripts.
tech

Свежие посты в категории «Tech Infrastructure»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @dumay. Быстрый тест: $20 за канал, $1000 за пакет по сети.