time.sleep и синхронный requests блокируют поток event loop. Таймер asyncio.waitfor не сможет вовремя обработать отмену, поэтому такой timeout не гарантирует остановку по настенным часам.
Что произойдёт, если внутри корутины, обёрнутой в asyncio.wait_for с таймаутом, вызвать time.sleep или requests?
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. О выполнении блокирующего кода.