Guía Python

Añade un heartbeat de Verifagent a un script Python

Llama a Verifagent al final del script, después del trabajo que debe tener éxito. Si el proceso falla antes, el heartbeat ausente es la alerta.

Antes de empezar

Crea un monitor con la frecuencia real de tu workflow y copia su URL desde el panel. Su token es secreto: no lo publiques.

Módulo a usar : requests / urllib. Colócalo después de la última acción útil en la ruta de éxito.

Configuración

1

Copia la URL del monitor

Crea un monitor para el calendario de este script. Guarda la URL en una variable de entorno, no en el control de versiones.

https://verifagent.com/api/ping/your-ping-token
2

Versión con requests

Instala requests si hace falta (pip install requests). Lanza excepción en caso de fallo para que un ping erróneo falle el proceso tras un trabajo correcto — llama al ping solo después del bloque de trabajo.

import os import requests PING_URL = os.environ["VERIFAGENT_URL"] # URL completa del monitor def main() -> None: # 1) Trabajo real primero do_work() # 2) Heartbeat solo tras el éxito response = requests.get(PING_URL, timeout=15) response.raise_for_status() print(response.json()) # {"ok": true} def do_work() -> None: # Sustituye por tu job ... if __name__ == "__main__": try: main() except Exception: # Sin ping en caso de fallo — Verifagent detectará el silencio raise
3

Versión con urllib (sin dependencias)

Mismo orden: trabajo primero, luego GET. urllib está en la biblioteca estándar.

import json import os import urllib.request PING_URL = os.environ["VERIFAGENT_URL"] def ping() -> None: with urllib.request.urlopen(PING_URL, timeout=15) as resp: body = json.load(resp) if resp.status != 200 or body.get("ok") is not True: raise RuntimeError(f"Respuesta de ping inesperada: {body!r}") def main() -> None: do_work() ping() def do_work() -> None: ... if __name__ == "__main__": main()
4

Programa y verifica

Exporta VERIFAGENT_URL, ejecuta el script una vez, espera {"ok": true}. Conéctalo a cron o systemd con el mismo entorno.

{"ok":true}
Nunca hagas ping al inicio de main(). Alinea el periodo esperado con la frecuencia del script; el margen debe cubrir el tiempo máximo de ejecución más la variación del planificador.

Rutas disponibles

La URL base basta para un heartbeat. Las variantes enriquecen el historial si tu plataforma tiene varias ramas.

GET https://YOUR_PING_URL
POST https://YOUR_PING_URL/success
POST https://YOUR_PING_URL/fail?msg=Error

Verificar

Una ejecución correcta cambia el monitor a Up. Fuerza una excepción antes de ping() y confirma que Verifagent no recibe nada en esa ejecución.

Respuesta esperada: 200 {"ok":true}. El monitor pasa de Pending a Up.