asyncio_patterns
SKILL.md
asyncio_patterns
asyncio y asyncio.gather permiten ejecutar simultáneamente los agentes independientes del pipeline reduciendo el tiempo total en ~50%.
When to use
Usar en el orchestrator_agent cada vez que dos o más agentes puedan ejecutarse en paralelo.
Instructions
- Identificar fases paralelas: liveness + doc_capture; OCR + face_match.
- Envolver cada llamada de agente como corrutina async.
- Usar
await asyncio.gather(task_a, task_b, return_exceptions=True). - Gestionar
return_exceptions=True: el fallo de un agente no cancela los demás. - Aplicar
asyncio.wait_for(coro, timeout=N)a cada tarea para respetar SLO de 8 segundos. - Propagar
session_idconcontextvars.ContextVara través de todas las corrutinas.
Notes
- El GIL no afecta a I/O-bound async, pero sí a CPU-bound. Las tareas CPU-bound deben ejecutarse en ProcessPoolExecutor o delegarse a Celery workers.
- asyncio.gather no garantiza orden de resultados; indexar por posición o usar diccionario.