Pregunta

Recientemente tuvimos un problema por el que una tarea programada ColdFusion no se reanudó después de una actualización de Windows y reiniciar el servidor CF. ¿Hay una manera de controlar la salud de las tareas programadas y ser alertado si no están funcionando correctamente? ¿O tengo que escribir una tarea de analizar los archivos de registro de esa información?

¿Fue útil?

Solución

Puede utilizar la API de administración para obtener información sobre las tareas programadas. la siguiente devuelve una matriz de estructuras con información sobre cada tarea programada. luego se puede recorrer la matriz y la mirada a la variable last_run.

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

Otros consejos

Si desea comprobar que las tareas programadas están trabajando a nivel más general, una forma es para programar una tarea de "latido", funcionando con la frecuencia que desee. Impuesto la tarea de actualizar un contador, cambiar una marca de tiempo, envía un correo electrónico, desencadenar un "estoy vivo" SMS cada mañana, agregar una entrada de registro - lo que tenga sentido. Esto no se que todas las tareas se están ejecutando lo dirá, pero le dirá que el servidor está vivo, y el sistema de tarea programada en sí está trabajando.

Otra opción es canalizar sus tareas a través de un único punto de entrada - una especie de controlador frontal para las tareas. Este delegados de la instalación y configuración de las tareas individuales a su código, en lugar del administrador CF. Su controlador de tarea maestra incluiría código de activación para cada tarea. Programar el controlador para funcionar a la misma frecuencia que sea necesario - así, una sola tarea, en lugar de muchos. En el controlador, algo como esto, quizá con intervalos de cinco minutos:

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

Una ventaja de este enfoque es que se puede expresar mucho más ricas go / no-go flujos de trabajo - que las tareas se ejecutan en las frecuencias semi-aleatorios, ejecutar tareas basado en el éxito o el fracaso de otras tareas, etc. Si ves / recibir el indicador de latido del corazón, usted sabe que su controlador de tareas de hecho plazo.

Otra opción sencilla. Habilitar el archivo de salida para cada tarea y comprobar estos archivos por trabajo Cron independiente: si el archivo se ha cambiado dentro de lapso de tiempo requerida debe significar que el Programador de tareas se ejecuta .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top