Frage

Wir haben vor kurzem ein Problem, wo eine Coldfusion geplante Aufgabe nicht fortgesetzt, nachdem ein Windows-Upgrade und ein CF-Server-Neustart haben. Gibt es eine Möglichkeit, die Gesundheit der geplanten Aufgaben zu überwachen und benachrichtigt werden, wenn sie nicht richtig ausgeführt werden? Oder brauche ich, um eine Aufgabe zu schreiben, um die Protokolldateien für diese Informationen zu analysieren?

War es hilfreich?

Lösung

Sie können den Admin-api verwenden, um Informationen über Ihre geplanten Aufgaben zu bekommen. Folgendes gibt einen Array von Strukturen mit Informationen über jede geplante Aufgabe. Sie können dann die Schleife durch das Array und Blick auf die last_run Variable.

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

Andere Tipps

Wenn Sie die geplanten Aufgaben überprüfen wollen, auf der allgemeinsten Ebene arbeiten, ist eine Möglichkeit, einen „Herzschlag“ Aufgabe zu planen, laufen so oft wie Sie es wünschen. Stellen Sie die Aufgabe, einen Zähler zu aktualisieren, einen Zeitstempel ändern, eine E-Mail senden, lösen ein „Ich bin am Leben“ jeden Morgen SMS, fügen Sie einen Protokolleintrag - was Sinn macht. Das werden Ihnen nicht sagen, dass alle Ihre Aufgaben ausgeführt werden, aber es wird Ihnen sagen, dass der Server am Leben ist, und das geplante Task-System selbst funktioniert.

Eine weitere Möglichkeit ist Ihre Aufgaben durch einen einzigen Zugangspunkt schleusen - eine Art Front-Controller für Aufgaben. Diese Delegierten die Einrichtung und Konfiguration der einzelnen Aufgaben an Ihren Code, anstatt der CF-Administrator. Ihr Master-Task-Controller würde Code Auslösung für jede Aufgabe. Planen Sie den Controller an laufen, so oft wie nötig - so, eine einzige Aufgabe, anstatt viele. In der Steuerung, so etwas wie diese, vielleicht alle fünf Minuten:

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

Ein Vorteil dieses Ansatzes ist, dass Sie viel reicher go ausdrücken / No-Go-Workflows - haben Aufgaben laufen bei semi-randomisierten Frequenzen, führen Aufgaben basierend auf dem Erfolg oder Misserfolg von anderen Aufgaben, etc. Wenn Sie sehen / erhalten den Herzschlag-Indikatoren, wissen Sie Ihre Aufgabe Controller in der Tat ausgeführt hat.

Eine weitere einfache Möglichkeit. Aktivieren Sie die Ausgabedatei für jede Aufgabe und überprüfen Sie diese Dateien durch unabhängigen Cron Job: wenn die Datei innerhalb der erforderlichen Zeitspanne geändert wurde soll, dass Scheduler-Task bedeuten wurde ausgeführt

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top