检查计划任务的健康状况?

时间:2010-10-19 18:29:54

标签: coldfusion coldfusion-9

我们最近遇到了一个问题,即Windows升级和CF服务器重启后,ColdFusion计划任务没有恢复。有没有办法监控计划任务的运行状况,如果运行不正常,会收到警报?或者我是否需要编写一个任务来解析该信息的日志文件?

3 个答案:

答案 0 :(得分:5)

您可以使用admin api获取有关计划任务的信息。下面返回一个结构数组,其中包含有关每个计划任务的信息。然后,您可以遍历数组并查看last_run变量。

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

答案 1 :(得分:0)

如果要检查计划任务是否在最常规级别工作,一种方法是安排“心跳”任务,按照您的意愿运行。将任务设置为更新计数器,更改时间戳,发送电子邮件,每天早上触发“我活着”的短信,添加日志条目 - 无论什么都有意义。这不会告诉您所有任务都在运行,但它会告诉您服务器处于活动状态,并且计划任务系统本身正在运行。

另一种选择是通过单一入口点来管理您的任务 - 一种用于任务的前端控制器。这会将各个任务的设置和配置委派给您的代码,而不是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

这种方法的一个优点是,您可以表达更丰富的通过/不通过工作流程 - 让任务以半随机频率运行,根据其他任务的成功或失败运行任务等。如果您看到/收到心跳指示器,你知道你的任务控制器确实运行了。

答案 2 :(得分:0)

另一个简单的选择。为每个任务启用输出文件,并通过独立的Cron作业检查这些文件:如果文件在所需的时间跨度内更改,则应表示已执行调度程序任务。