Nivel 134: Background con Pipeline Anidado
Objetivo
Mostrar que Background puede ejecutar pipelines anidados completos.
Código Fuente
"""
DEMO LEVEL 134: Background con Pipeline Anidado
-----------------------------------------------
Adds: Background ejecutando un pipeline anidado.
Continues: L133.
DIAGRAM:
Pipeline → Background(sub_pipeline) → main_continues
"""
import time
from wpipe import Pipeline, step
from wpipe.pipe.components.logic_blocks import Background
@step(name="prepare")
def prepare(data):
"""Preparación."""
print("📌 Preparando...")
return {"prepared": True}
@step(name="nested_step_1")
def nested_step_1(data):
"""Paso anidado 1."""
print(" 📦 [Nested] Procesando paso 1...")
return {"nested_1": True}
@step(name="nested_step_2")
def nested_step_2(data):
"""Paso anidado 2."""
print(" 📦 [Nested] Procesando paso 2...")
time.sleep(0.1)
return {"nested_2": True}
@step(name="continue_main")
def continue_main(data):
"""Continúa en pipeline principal."""
print("✅ Pipeline principal continúa sin esperar el nested!")
return data
if __name__ == "__main__":
print(">>> DEMO 134: Background con Pipeline Anidado")
print("=" * 50)
sub_pipeline = Pipeline(pipeline_name="sub_pipeline", verbose=False)
sub_pipeline.set_steps([nested_step_1, nested_step_2])
pipe = Pipeline(pipeline_name="demo_134", verbose=False)
pipe.set_steps([
prepare,
Background(sub_pipeline),
continue_main,
])
result = pipe.run({})
print("\n✅ Pipeline principal NO esperó el sub-pipeline!")
Resultado de Ejecución
>>> DEMO 134: Background con Pipeline Anidado ================================================== 📌 Preparando... 📦 [Nested] Procesando paso 1... 📦 [Nested] Procesando paso 2... ✅ Pipeline principal continúa sin esperar el nested! demo_134 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00 sub_pipeline ━━━━━━━━━━━━━━━━━━━━ 50% -:--:--✅ Pipeline principal NO esperó el sub-pipeline!