Nivel 136: Background en PipelineAsync
Objetivo
Mostrar que Background funciona también en PipelineAsync.
Código Fuente
"""
DEMO LEVEL 136: Background en PipelineAsync
--------------------------------------------
Adds: Background task en pipeline asíncrono.
Continues: L135.
DIAGRAM:
PipelineAsync → Background(async_task) → next
"""
import asyncio
import time
from wpipe import PipelineAsync
from wpipe.pipe.components.logic_blocks import Background
async def process_task(data):
"""Tarea de procesamiento."""
print("⚡ Procesando...")
await asyncio.sleep(0.05)
return {"processed": True}
async def background_async(data):
"""Tarea async en background."""
print("🔄 [BG-ASYNC] Iniciando tarea async...")
await asyncio.sleep(0.2)
print("🔄 [BG-ASYNC] ¡Completado!")
async def after_background(data):
"""Después de background."""
print("✅ Pipeline async continúa sin esperar!")
return data
async def main():
print(">>> DEMO 136: Background en PipelineAsync")
print("=" * 50)
start = time.time()
pipe = PipelineAsync(pipeline_name="demo_136", verbose=False)
pipe.set_steps([
process_task,
Background(background_async),
after_background,
])
result = await pipe.run({})
elapsed = time.time() - start
print(f"\n⏱️ Tiempo: {elapsed*1000:.0f}ms")
if __name__ == "__main__":
asyncio.run(main())
Resultado de Ejecución
>>> DEMO 136: Background en PipelineAsync ================================================== ⚡ Procesando... 🔄 [BG-ASYNC] Iniciando tarea async... 🔄 [BG-ASYNC] ¡Completado! ✅ Pipeline async continúa sin esperar!⏱️ Tiempo: 251ms