让我们假设每五分钟通过CRON触发一次工作。出于某种原因,在10:00执行一次会持续很长时间,例如8分钟。是否在10:05触发了第二个实例?
如果是,那么确保作业以单身形式运行并且从不两次运行的正确策略是什么?
答案 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非常有用 您不希望缩放或作为同时多个运行的任务 实例,例如重建索引,数据分析和类似任务。