Guida Python

Aggiungi un heartbeat Verifagent a uno script Python

Chiama Verifagent alla fine dello script, dopo il lavoro che deve riuscire. Se il processo crasha prima, l'heartbeat mancante è l'avviso.

Prima di iniziare

Crea un monitor con la frequenza reale del workflow, poi copia l'URL dalla dashboard. Il token è segreto: non pubblicarlo.

Modulo da usare : requests / urllib. Posizionalo dopo l'ultima azione utile sul percorso di successo.

Configurazione

1

Copia l'URL del monitor

Crea un monitor per la pianificazione di questo script. Conserva l'URL in una variabile d'ambiente, non nel codice sorgente.

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

Versione con requests

Installa requests se necessario (pip install requests). Solleva errore in caso di fallimento così un ping errato fallisce il processo dopo il lavoro riuscito — chiama il ping solo dopo il blocco di lavoro.

import os import requests PING_URL = os.environ["VERIFAGENT_URL"] # URL completo del monitor def main() -> None: # 1) Lavoro reale prima do_work() # 2) Heartbeat solo dopo il successo response = requests.get(PING_URL, timeout=15) response.raise_for_status() print(response.json()) # {"ok": true} def do_work() -> None: # Sostituisci con il tuo job ... if __name__ == "__main__": try: main() except Exception: # Nessun ping in caso di fallimento — Verifagent rileverà il silenzio raise
3

Versione con urllib (nessuna dipendenza)

Stesso ordine: lavoro prima, poi GET. urllib è nella libreria standard.

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"Risposta ping inattesa: {body!r}") def main() -> None: do_work() ping() def do_work() -> None: ... if __name__ == "__main__": main()
4

Pianifica e verifica

Esporta VERIFAGENT_URL, esegui lo script una volta, attendi {"ok": true}. Collegalo a cron o systemd con lo stesso ambiente.

{"ok":true}
Non pingare mai all'inizio di main(). Allinea il periodo atteso a quanto spesso lo script gira; la tolleranza deve coprire il runtime massimo più il jitter dello scheduler.

Route disponibili

L'URL base basta per un heartbeat. Le varianti arricchiscono la cronologia se la piattaforma ha più rami.

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

Verifica

Un'esecuzione riuscita porta il monitor a Up. Forza un'eccezione prima di ping() e conferma che Verifagent non riceve nulla per quella esecuzione.

Risposta attesa: 200 {"ok":true}. Il monitor passa da In attesa a Up.