Вопрос проверяет понимание асинхронной модели исполнения и различий между блокирующими и неблокирующими операциями.
time.sleep() блокирует поток выполнения, даже если он вызван внутри async-функции. Это приводит к блокировке всего event loop. Другие корутины перестают выполняться на время сна. Такое поведение ломает асинхронность. Вместо этого следует использовать asyncio.sleep().
Асинхронный код требует строгого соблюдения неблокирующей модели.
time.sleep() — это блокирующая операция, останавливающая текущий поток.asyncio.sleep() — неблокирующая пауза, которая освобождает event loop.
Рассмотрим ключевые последствия:
Блокировка event loop
другие корутины не выполняются
таймеры и I/O не обрабатываются
Потеря преимуществ async
код становится последовательным
растёт latency
Трудная диагностика
внешне код выглядит корректным
проблема проявляется только под нагрузкой
async def handler():
time.sleep(2) # блокирует event loop
return "ok"import asyncio
async def handler():
await asyncio.sleep(2)
return "ok"В асинхронных фреймворках (FastAPI, aiohttp):
один event loop обслуживает тысячи запросов
одна блокировка замораживает всех клиентов
Использование time.sleep() внутри async-функций — критическая ошибка. В асинхронном коде допустимы только неблокирующие операции.