Проверьте здоровье запланированных задач?

StackOverflow https://stackoverflow.com/questions/3971461

  •  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: если файл был изменен в течение необходимого времени, должен означать, что задача планировщика была выполнена.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top