我们有一个 Azure Function 应用程序,具有 4 个功能,包括计时器触发器。尽管最初计划每 4 小时运行一次,但由于“UnscheduledInitationReason: IsPastDue”,它意外地每 2 到 3 分钟触发一次。此外,该函数还进行外部 API 调用以将数据拉入系统。
我尝试禁用、启用、重启、删除和重新部署该功能,但问题仍然存在。
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 中检查函数日志以获取错误详细信息: