经常触发的CRON Azure Web作业是否在其运行时间超过配置的频率时触发

时间:2016-09-24 10:40:29

标签: azure cron azure-webjobs

让我们假设每五分钟通过CRON触发一次工作。出于某种原因,在10:00执行一次会持续很长时间,例如8分钟。是否在10:05触发了第二个实例?

如果是,那么确保作业以单身形式运行并且从不两次运行的正确策略是什么?

1 个答案:

答案 0 :(得分:1)

我自己没有测试过,但是从docs我可以找到该声明

  

如果您使用必须作为单个实例运行的计划驱动任务,   请注意以下事项:

     
      
  • 如果正在运行调度程序的计算实例(例如   您将使用Windows计划任务的虚拟机进行缩放   有多个调度程序实例在运行。这些可以开始   多个任务实例。
  •   
  • 如果任务运行时间比<   调度程序事件之间的时间段,调度程序可能会启动另一个   任务实例 上一个一个仍然在运行。
  •   

this部分

中的文档中也提到了可能的解决方案
  

默认情况下,WebJobs会与其关联的Azure Web Apps进行扩展   实例。但是,如果您希望WebJob只运行一个   例如,您可以创建包含JSON的Settings.job文件   数据{ "is_singleton": true }。这迫使Azure只运行一个   WebJob的实例,即使有多个实例   相关的网络应用。这对于预定作业来说是一种有用的技术   必须只作为一个实例运行。

that部分

  

默认情况下,WebJobs随Web应用程序缩放。但是,您可以配置   通过设置is_singleton在单个实例上运行的作业   配置属性为true。单实例WebJobs非常有用   您不希望缩放或作为同时多个运行的任务   实例,例如重建索引,数据分析和类似任务。