Question

Nous avons eu récemment un problème où une tâche planifiée ColdFusion n'a pas repris après une mise à niveau Windows et un redémarrage du serveur CF. Y at-il un moyen de surveiller la santé des tâches planifiées et être alerté si elles ne sont pas en cours d'exécution correctement? Ou aurais-je besoin d'écrire une tâche pour analyser les fichiers journaux pour cette information?

Était-ce utile?

La solution

vous pouvez utiliser l'api admin pour obtenir des informations sur vos tâches planifiées. ce qui suit renvoie un tableau de structures avec des informations sur chaque tâche planifiée. vous pouvez alors en boucle le tableau et regardez la variable last_run.

<cfset arySchedTasks = createobject("java","coldfusion.server.ServiceFactory").getCronService().listall() />

Autres conseils

Si vous voulez vérifier que les tâches planifiées travaillent au niveau le plus général, est une façon de planifier une tâche « rythme cardiaque », en cours d'exécution aussi souvent que vous le souhaitez. Définissez la tâche de mettre à jour un compteur, changer un horodatage, envoyer un e-mail, déclencher un « Je suis vivant » SMS chaque matin, ajoutez une entrée de journal - ce qui est logique. Cela ne vous dira pas que toutes vos tâches en cours d'exécution, mais il vous dira que le serveur est en vie, et le système de tâche planifiée se travaille.

Une autre option consiste à canaliser vos tâches par un seul point d'entrée - une sorte de contrôleur frontal pour les tâches. Cette délègue la configuration et de configuration des tâches individuelles à votre code, plutôt que l'Administrateur des FC. Votre contrôleur de tâche maître comprendrait le code de déclenchement pour chaque tâche. Planifier le contrôleur pour fonctionner à aussi souvent que nécessaire - donc, une tâche unique, plutôt que beaucoup. Dans le contrôleur, quelque chose comme ça, peut-être tous les cinq minutes:

Check the time/date, compare against set of tasks
If time (or frequency) is A, run tasks P,Q,R, log success/failure
If time is B, run tasks S,T, log success/failure
If time is C, run tasks U,V,X, log success/failure    
Send heartbeat with success/failure codes for all relevant tasks

L'un des avantages de cette approche est que vous pouvez exprimer aller / flux de travail sans aller beaucoup plus riches - ont des tâches exécutées à des fréquences semi-aléatoires, exécuter des tâches en fonction du succès ou de l'échec d'autres tâches, etc. Si vous voyez / recevoir l'indicateur du rythme cardiaque, vous savez que votre contrôleur de tâches a fait en terme de fait.

Une autre option simple. Activer le fichier de sortie pour chaque tâche et vérifier ces fichiers par travail indépendant Cron: si le fichier a été modifié dans la durée de temps nécessaire devrait signifier que la tâche du planificateur a été exécuté

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top