Azure 函数问题:触发器详细信息:UnscheduledInitationReason:IsPastDue,OriginalSchedule:

问题描述 投票:0回答:1

我们有一个 Azure Function 应用程序,具有 4 个功能,包括计时器触发器。尽管最初计划每 4 小时运行一次,但由于“UnscheduledInitationReason: IsPastDue”,它意外地每 2 到 3 分钟触发一次。此外,该函数还进行外部 API 调用以将数据拉入系统。

我尝试禁用、启用、重启、删除和重新部署该功能,但问题仍然存在。

azure-functions
1个回答
0
投票
  • IsPastDue 标志传递给 azure 函数以警告计时器是否过期。
  • 有时,计时器函数可能会延迟运行,在这种情况下,它仍然会被调用,但晚于计划时间,或者函数应用程序
    restart
    可能会导致错过调用。
  • 然后
    IsPastDue
    标志将设置为 true 以使您的函数有机会做出反应。

使用以下代码检查

IsPastDue
标志是否为真:

[FunctionName("Function1")]
       
public void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation($"C# Timer trigger was delayed at: {DateTime.Now}");
    }
    else
    {
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    }
}
  • 要解决此错误,请清理

    azure-webjobs-hosts
    容器并重新启动该功能。

  • 另请在 Function App 的 Application Insights 中检查函数日志以获取错误详细信息:

enter image description here

  • 正如SO答案中提到的,也可能是因为有多个功能,为定时器触发功能创建一个单独的功能应用程序。
© www.soinside.com 2019 - 2024. All rights reserved.