Sobes.tech
Junior — Middle
118

¿Qué sucede si en una función asíncrona se aplica una demora bloqueante con time.sleep()?

Empresas donde se preguntó
СБЕР Центр ИИСБЕР Центр ИИ

Respuesta de la IA

sobes.tech AI

Если в асинхронной функции Python использовать блокирующую задержку time.sleep(), то выполнение всей программы будет приостановлено на время сна, блокируя текущий поток. Это нарушает преимущества асинхронности, так как другие задачи в event loop не смогут выполняться параллельно.

Вместо time.sleep() в асинхронном коде следует использовать await asyncio.sleep(), который не блокирует event loop и позволяет другим корутинам выполняться во время ожидания.

Пример:

import asyncio
import time

async def wrong_sleep():
    print('Start')
    time.sleep(2)  # блокирует весь event loop
    print('End')

async def correct_sleep():
    print('Start')
    await asyncio.sleep(2)  # не блокирует event loop
    print('End')

asyncio.run(correct_sleep())