¿Qué hace async-python-patterns?
Domina asyncio, programación concurrente y patrones async/await en Python para construir aplicaciones de alto rendimiento. Útil al crear APIs asíncronas, sistemas concurrentes o aplicaciones ligadas a I/O que requieren operaciones no bloqueantes.
¿Qué aprenderás?
- asyncio y el modelo de concurrencia basado en eventos
- async/await para escribir código no bloqueante
- Creación y gestión de corrutinas y tareas
- Sincronización entre tareas: locks, semáforos, eventos
- Manejo de excepciones en código asíncrono
- Timeouts y cancelación de tareas
- Workers asíncronos y pooling de conexiones
- Estructuración de aplicaciones asíncronas reales
Conceptos clave
| Concepto | Descripción |
|---|---|
| Corrutina | Función definida con async def que puede pausarse y reanudarse |
| Tarea | Objeto que envuelve una corrutina y permite su ejecución concurrente |
| Event Loop | Bucle que gestiona la ejecución de tareas asíncronas |
| Awaitable | Objeto que puede usarse con await (corrutinas, tareas, futures) |
Ejemplo básico
import asyncio
async def saludar(nombre):
await asyncio.sleep(1)
return f"Hola, {nombre}!"
async def main():
resultado = await saludar("Mundo")
print(resultado)
asyncio.run(main())
Ejecución concurrente
import asyncio
async def tarea(id, segundos):
print(f"Tarea {id} iniciada")
await asyncio.sleep(segundos)
print(f"Tarea {id} completada")
return id
async def main():
# Ejecutar múltiples tareas concurrentemente
resultados = await asyncio.gather(
tarea(1, 2),
tarea(2, 1),
tarea(3, 3)
)
print(f"Resultados: {resultados}")
asyncio.run(main())
Sincronización
import asyncio
async def ejemplo_lock():
lock = asyncio.Lock()
async with lock:
# Sección crítica protegida
await asyncio.sleep(0.1)
print(\