Проверить работоспособность запланированных заданий? - PullRequest
2 голосов
/ 19 октября 2010

У нас недавно была проблема, когда запланированная задача ColdFusion не возобновлялась после обновления Windows и перезапуска CF-сервера. Есть ли способ контролировать состояние запланированных задач и получать уведомления, если они не выполняются должным образом? Или мне нужно написать задачу для анализа файлов журнала на эту информацию?

Ответы [ 3 ]

5 голосов
/ 19 октября 2010

вы можете использовать admin api для получения информации о ваших запланированных задачах.следующее возвращает массив структур с информацией о каждой запланированной задаче.затем вы можете просмотреть массив и просмотреть переменную last_run.

<cfset arySchedTasks = createobject("java","coldfusion.server.ServiceFactory").getCronService().listall() />
0 голосов
/ 20 октября 2010

Еще один простой вариант.Включите выходной файл для каждой задачи и проверьте эти файлы с помощью независимого задания Cron: если файл был изменен в течение требуемого промежутка времени, это означает, что задание планировщика было выполнено.

0 голосов
/ 19 октября 2010

Если вы хотите проверить, работают ли запланированные задачи на самом общем уровне, один из способов - запланировать задачу «пульса», которая будет выполняться так часто, как вы хотите. Поставьте задачу обновить счетчик, изменить временную метку, отправить электронное письмо, вызывать каждое утро SMS «Я жив», добавлять запись в журнал - все, что имеет смысл. Это не скажет вам, что все ваши задачи выполняются, но сообщит вам, что сервер активен, а сама система запланированных задач работает.

Другой вариант - направить ваши задачи через единую точку входа - своего рода фронт-контроллер для задач. Это делегирует настройку и настройку отдельных задач вашему коду, а не администратору 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

Одним из преимуществ этого подхода является то, что вы можете выражать гораздо более богатые рабочие процессы go / no-go - запускать задачи с полурандомизированной частотой, запускать задачи на основе успеха или неудачи других задач и т. Д. Если вы видите / Получите индикатор пульса, вы знаете, что ваш контроллер задач действительно работал.

...