Встречается на собеседованиях • сегодня

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

Event Loop в asyncio может быть заблокирован, если внутри корутины выполняется синхронный (блокирующий) код, который не отдает управление обратно в цикл событий. Это приводит к "зависанию" всего приложения.

Основные причины:

  1. Долгие CPU-bound операции (например, сложные вычисления без await).
  2. Синхронные I/O операции (чтение файлов, сетевые запросы через requests вместо aiohttp).
  3. Использование time.sleep() вместо asyncio.sleep().

Пример блокировки:

python
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().

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы