Nivel 59: demo_level59.py
Este es el nivel 59 del tour de aprendizaje.
Código Fuente
"""
DEMO LEVEL 59: Retry con Delay Variable
--------------------------------------
Adds: delay_delay dinámico basado en número de intento.
Continues: Retry selectivo de L58.
DIAGRAM:
(operacion_red) --[Fallo]--> delay=1s --> retry
--[Fallo]--> delay=2s --> retry
--[Fallo]--> delay=3s --> retry
--[OK] --> continuar
"""
import random
from wpipe import Pipeline, step
@step(name="conectar_servidor", retry_count=5, retry_delay=1)
def conectar_servidor(data: dict) -> None:
"""Conectar servidor step.
Args:
data: Input data for the step.
Returns:
dict: Result of the step.
"""
if random.random() < 0.6:
raise ConnectionError("Servidor no responde")
print("✅ Conectado al servidor")
return {"connected": True}
@step(name="descargar_datos")
def descargar_datos(data: dict) -> None:
"""Descargar datos step.
Args:
data: Input data for the step.
Returns:
dict: Result of the step.
"""
print("📥 Descargando datos...")
return {"datos": "descargados"}
if __name__ == "__main__":
pipe = Pipeline(pipeline_name="viaje_l59_retrydelay", verbose=True)
pipe.set_steps([conectar_servidor, descargar_datos])
print("\n>>> Probando retry con delay...\n")
try:
pipe.run({})
except ConnectionError as e:
print(e)
Resultado de Ejecución
>>> Probando retry con delay...✅ Conectado al servidor 📥 Descargando datos… viaje_l59_retrydelay ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00