Что будет, если в async-функции вызвать блокирующий код? Что произойдёт с event loop?

Вызов time.sleep() вместо await asyncio.sleep() блокирует поток и весь цикл событий.

Короткий ответ

Что ответить на собеседовании

В асинхронном программировании на Python, особенно при использовании asyncio, блокировки возникают при вызове функций, которые выполняют синхронные операции ввода-вывода или длительные вычисления без освобождения управления циклу событий. Например:

Подробный разбор

Ответ с пояснениями

В асинхронном программировании на Python, особенно при использовании asyncio, блокировки возникают при вызове функций, которые выполняют синхронные операции ввода-вывода или длительные вычисления без освобождения управления циклу событий. Например:

  • Вызов time.sleep() вместо await asyncio.sleep() блокирует поток и весь цикл событий.
  • Синхронные операции чтения/записи файлов или сетевые запросы без использования асинхронных библиотек.
  • Использование блокирующих функций из стандартной библиотеки, например, requests.get() вместо aiohttp.

Чтобы избежать блокировок, нужно использовать асинхронные аналоги функций и не вызывать синхронные блокирующие операции внутри корутин.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее