Что произойдёт, если внутри корутины, обёрнутой в asyncio.wait_for с таймаутом, вызвать time.sleep или requests?

time.sleep и синхронный requests блокируют поток event loop. Таймер asyncio.waitfor не сможет вовремя обработать отмену, поэтому такой timeout не гарантирует остановку по настенным часам.

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

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

time.sleep и синхронный requests блокируют поток event loop. Таймер asyncio.waitfor не сможет вовремя обработать отмену, поэтому такой timeout не гарантирует остановку по настенным часам.

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

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

Условие

Что произойдёт, если внутри корутины, обёрнутой в asyncio.wait_for с таймаутом, вызвать time.sleep или requests?

Ответ

time.sleep и синхронный requests блокируют поток event loop. Таймер asyncio.wait_for не сможет вовремя обработать отмену, поэтому такой timeout не гарантирует остановку по настенным часам.

Используйте asyncio.sleep, асинхронный HTTP-клиент либо отдельный поток для синхронного I/O. Для потока задавайте таймаут самой сетевой операции: отмена ожидания не останавливает уже работающий requests. О выполнении блокирующего кода.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку