NOTAS SOBRE ALERTAS DE CAÍDA
Prueba tu relé con un stream de caídas grabado
Guarda las líneas data: de una sesión en vivo, reprodúcelas por tu relé desde un archivo local y mira filtro, deduplicación y formato funcionando.
Un relé de alertas de caída es difícil de probar en vivo, porque el stream solo habla cuando un precio cae. La solución es grabar una sesión real y reproducirla: un pequeño servidor local gotea las líneas guardadas en tu relé a velocidad realista, y ves el filtro, el almacén de deduplicación y el formato del mensaje funcionando bajo demanda, tantas veces como necesites.
Graba una vez, guarda para siempre
El stream es texto plano, lo que hace la grabación trivial. Mientras tu lector está conectado, desvía cada línea cruda a un archivo: el objeto de control que abre la sesión, luego cada línea data: conforme llega. Una hora movida te da más material de prueba que una semana esperando la caída correcta.
Guarda el archivo verbatim, excepto el tiempo. El punto de la grabación es que tu relé no puede distinguirla del stream en vivo, así que no la embellezcas, no la reordenes, y no arregles las alertas que parecen mal. Las raras son las útiles.
Reprodúcela localmente
Un servidor de reproducción son veinte líneas: lee el archivo, escribe cada línea con un pequeño retraso, flush. Apunta tu relé a la dirección local en lugar de la URL del stream y arráncalo. Todo lo posterior a la conexión, el parseo, la regla de umbral, la comprobación de deduplicación, el formateador, la cola del webhook, ahora corre contra eventos reales.
import time
def replay(path, out, delay=0.05):
with open(path) as f:
for line in f:
out.write(line)
out.flush()
time.sleep(delay)
Aquí también viven los ensayos de fallo. Trunca una línea a mitad de un array JSON para ensayar un frame roto. Duplica un lote para comprobar las claves de deduplicación de la guía de deduplicación. Envía la misma alerta dos veces con un intervalo para confirmar que el cooldown sigue valiendo.
Qué verificar
Tres comprobaciones cubren la mayoría de los errores de relé. El manejo de frames: un objeto suelto es un mensaje de control y debe saltarse, y todo array parsea limpio, siguiendo el formato de frames de la guía de configuración SSE, verificado el 2026-10-01. El camino de la regla: cada alerta superviviente pasa tu umbral exactamente una vez, sin duplicados tras un lote duplicado. La salida: el mensaje muestra el partido, el mercado, los dos precios y el precio justo, dispuestos como la guía de relé los formatea.
Ejecuta el lado del webhook contra un canal de prueba o una URL capturadora de solicitudes, nunca el canal de producción que tus lectores ven.
Cuando la reproducción discrepa del directo
Si el relé funciona con la grabación y falla en vivo, la diferencia está en la conexión, no en los eventos: autenticación, la titularidad de stream del plan, o el comportamiento de reconexión. Eso estrecha la búsqueda a la mitad de conexión de la guía de configuración, que es exactamente lo que una buena grabación te compra.
Graba el stream una vez, reprodúcelo para siempre. El feed en vivo es para producción; el archivo es para la prueba.