Guide · Prefect
Surveiller Prefect avec un interrupteur homme mort
L'interface de Prefect montre l'état d'un flow, mais ne vous prévient pas si l'orchestrateur lui-même bloque, si un agent tombe hors ligne, ou si un déploiement planifié cesse silencieusement de se déclencher. Un check-in Mortemain, branché via quelques state hooks, comble ce manque.
1. Créez un check
Créez un check dans Mortemain calé sur le rythme du flow (avec une marge pour le temps d'exécution normal) et copiez son URL de ping unique, par exemple https://ping.mortemain.com/your-check-uuid.
2. Ajoutez des state hooks au flow
Les flows Prefect 2 et 3 acceptent des listes de fonctions on_completion et on_failure. Faites le check-in sur l'URL de base quand le flow se termine, et sur /fail quand il échoue, pour qu'un plantage alerte immédiatement plutôt que d'attendre l'expiration du délai.
import httpx from prefect import flow URL = "https://ping.mortemain.com/your-check-uuid" def notify_success(flow, flow_run, state): httpx.get(URL, timeout=10) def notify_failure(flow, flow_run, state): httpx.get(URL + "/fail", timeout=10) @flow(on_completion=[notify_success], on_failure=[notify_failure]) def nightly_etl(): ... # vos tâches
Les state hooks s'exécutent pour le flow run de premier niveau, quel que soit le nombre de tâches qu'il contient : cela suffit pour la plupart des pipelines, sans rien changer à l'intérieur des tâches.
3. Suivez la durée d'exécution (optionnel)
Ajoutez un hook on_running pour faire le check-in sur /start dès le démarrage du flow. Mortemain indique alors la durée de chaque exécution, en plus de sa simple survenue.
def notify_start(flow, flow_run, state): httpx.get(URL + "/start", timeout=10) @flow( on_running=[notify_start], on_completion=[notify_success], on_failure=[notify_failure], ) def nightly_etl(): ...
4. Déploiements et work pools
Les state hooks se déclenchent de la même façon que le flow tourne en local, via un déploiement planifié, ou via un work pool et un worker. Un seul check couvre donc toute la chaîne : si le worker meurt, si le planificateur bloque, ou si l'exécution échoue, aucun check-in n'arrive et Mortemain alerte dès que le délai est dépassé.
Testez
Lancez le flow une fois, avec prefect deployment run ou en local. Le check passe à up en une seconde ou deux après le ping ; forcez une exception pour vérifier que on_failure déclenche bien l'alerte down immédiatement.