繁体   English   中英

当 Azure 定时器 function 的执行持续时间长于触发周期时会发生什么?

[英]What happens when an Azure Timer function has an execution duration that's longer shorter than the trigger period?

如果 Azure function 执行了 10 分钟,但有 5 分钟的时间,触发器是否仍会在 5 分钟标记处触发?

回答这个问题最简单的方法是自己测试。

我创建了一个小的 function,它只在执行后等待 90 秒。

计时器设置为每分钟运行一次,因此,测试是查看 function 是否仍然在每分钟执行一次,或者是否延迟了 30 秒。

日程

日志显示你的问题的答案是......

您可以看到它已将另一个执行排队,因为一旦它完成,它就会再次开始。

您还会看到每次调用的开始时间都延迟了 function 运行所需的额外 30 秒。

这是function...

using System;

public static async Task Run(TimerInfo myTimer, ILogger log)
{
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

    await Task.Delay(90000);
}

监控日志

日志

调用

调用

我尝试的解决方法之一是:

host.json中,明确给出 function 超时以在本地进行测试:

{
  "version": "2.0",

  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    }
  },
    "functionTimeout": "00:05:00"
}

在 Azure Function 中,每 10 分钟安排一次 Timer 触发:

  public void Run([TimerTrigger("0 */10 * * * *")]TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"C# Timer trigger function1 executed at: {DateTime.Now}");

在此处输入图像描述

即使在 Azure 云(消费模式)中运行,也没有超时发生,因为计时器仍然每 10 分钟运行一次:

在此处输入图像描述

MS DocAzure 博客文章中所述,超时出现在 Azure Function 请求(这意味着您的业务逻辑应该在 function 超时发生之前完成,因此在每个计划中您都可以使用计时器触发器运行相同的逻辑)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM