Проверьте здоровье запланированных задач?
-
09-10-2019 - |
Вопрос
У нас недавно у нас была проблема, когда запланированная задача ColdFusion не возобновлялась после обновления Windows и перезапустить сервер CF. Есть ли способ контролировать здоровье запланированных задач и быть предупрежденным, если они не работают должным образом? Или мне нужно будет написать задачу для анализа файлов журнала для этой информации?
Решение
Вы можете использовать Admin API для получения информации о ваших запланированных задачах. Следующее возвращает массив структур с информацией о каждой запланированной задаче. Затем вы можете зацикливаться через массив и посмотрите на переменную Last_Run.
<cfset arySchedTasks = createobject("java","coldfusion.server.ServiceFactory").getCronService().listall() />
Другие советы
Если вы хотите проверить, что запланированные задачи работают на самом общем уровне, в один из способов заключается в запланировании задачи «сердцебиение», работая так часто, как вы хотите. Установите задачу обновить счетчик, измените временную метку, отправьте электронное письмо, вызвать смс «Я жив» каждое утро добавьте запись журнала - все, что имеет смысл. Это не скажет вам, что все ваши задачи запущены, но это скажет вам, что сервер жив, и сама запланированная задача работает.
Другим вариантом является вовлечение ваших задач через одну точку ввода - своего рода передний контроллер для задач. Это делегирует настройки и настройку отдельных задач к вашему коду, а не администратору CF. Ваш главный контроллер задачи будет включать запуск кода для каждой задачи. Расписание контроллера запускается как часто, по мере необходимости - поэтому одна единственная задача, а не многие. В контроллере что-то подобное, возможно, каждые пять минут:
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
Одним из преимуществ этого подхода является то, что вы можете выразить много рабочих процессов Richer Go / No-Go - есть задачи, выполняемые на полурадоизолированных частотах, запускают задачи, основанные на успехе или сбое других задач и т. Д. Если вы видите / получаете сердцебиение Индикатор, вы знаете, что ваш контроллер задачи на самом деле работает.
Еще один простой вариант. Включите выходной файл для каждой задачи и проверьте эти файлы независимым заданием CRON: если файл был изменен в течение необходимого времени, должен означать, что задача планировщика была выполнена.