Nivel 130: Integración de API y Métricas de Negocio

Objetivo

Continuar el ascenso por La Senda del Maestro. En este nivel, realizamos una demostración limpia y potente de integración con API y registro de métricas personalizadas.

Conceptos Clave

  • Métricas de Negocio: Uso de Metric.record para capturar KPIs que no son solo técnicos.

  • Integración API: Consolidación del flujo de registro de procesos remotos.

  • Trazabilidad: Capacidad de monitorizar cada detalle del pipeline.

¿Qué estamos probando?

Validamos el ciclo de vida de un pipeline con observabilidad: 1. Registro del proceso en el sistema. 2. Ejecución de pasos con metadatos. 3. Captura de métricas de negocio en tiempo real. 4. Finalización exitosa.

Código Fuente

"""
DEMO LEVEL 130: API Completo (Demo Final)
-----------------------------------
Adds: Final demo integrating everything.
Continues: L129.

DIAGRAM:
Demo completo de API con pipeline
"""

from wpipe import Pipeline, step, Metric
from wpipe.api_client import APIClient

@step(name="start")
def start(data: dict) -> None:

    """Start step.

    Args:

        data: Input data for the step.

    Returns:

        dict: Result of the step.

    """
    print("🔑 Starting API system...")
    return {"iniciado": True}

@step(name="process")
def process(data: dict) -> None:

    """Process step.

    Args:

        data: Input data for the step.

    Returns:

        dict: Result of the step.

    """
    print("⚡ Processing data...")
    Metric.record("api_calls", 1)
    return {"procesado": True}

if __name__ == "__main__":
    print("=" * 50)
    print("🎉 DEMO FINAL - API Integration")
    print("=" * 50)

    pipe = Pipeline(pipeline_name="viaje_l130", verbose=True)
    pipe.set_steps([start, process])
    pipe.run({})

    print("\n✅ Demo completed with success!")
    print(f"📊 Metric: api_calls = 1")

Resultado de Ejecución


🔑 Starting API system… ⚡ Processing data… [METRIC] api_calls: 1 viaje_l130 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00

✅ Demo completed with success! 📊 Metric: api_calls = 1