В каком случае Event Loop в asyncio может быть заблокирован

Python Senior VK
В каком случае Event Loop в asyncio может быть заблокирован
Ответы
Event Loop в asyncio может быть заблокирован, если внутри корутины выполняется синхронный (блокирующий) код, который не отдает управление обратно в цикл событий. Это приводит к "зависанию" всего приложения. Основные причины: - Долгие CPU-bound операции (например, сложные вычисления без `await`). - Синхронные I/O операции (чтение файлов, сетевые запросы через `requests` вместо `aiohttp`). - Использование `time.sleep()` вместо `asyncio.sleep()`. Пример блокировки: ``` import asyncio async def blocking_task(): # Синхронный sleep блокирует event loop time.sleep(5) # Неправильно! # await asyncio.sleep(5) # Правильно async def main(): await asyncio.gather( blocking_task(), asyncio.sleep(1) # Эта задача не выполнится вовремя ) ``` Решение: использовать `await` для асинхронных операций или выносить блокирующий код в отдельные потоки через `loop.run_in_executor()`.