Timeouts asíncronos en Python
Acotar cuánto tiempo puede tardar un await.
import asyncio
async def consulta_lenta():
await asyncio.sleep(10)
return "filas"
async def principal():
try:
return await asyncio.wait_for(consulta_lenta(), timeout=0.2)
except TimeoutError:
return "me rendí"
resultado = asyncio.run(principal())
Cómo funciona
wait_forcancela la corrutina después detimeout.- Un
TimeoutErroravisa que tardó demasiado. - El manejador devuelve un valor de repuesto en su lugar.
Palabras clave y builtins usados aquí
asyncawaitdefexceptreturntry
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 252
- Tokens
- 58
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 33 segundos.
Paso 3 de 4 en Async; paso 26 de 53 en Python pythónico.