【发布时间】:2020-07-27 13:06:27
【问题描述】:
在我的 Azure Functions 中,我有 26 个函数,只有 7 个带有计时器触发器(请参阅我的 previous post,我也看到了这个 other post,但它已经很旧了)。微软对此没有任何建议。一些函数有一个计时器触发器,并且在进程结束时每个函数都会发送一封电子邮件。我有 2 种类型的计时器触发器:
- 每 20 分钟运行一次函数
- 在夜间的特定时间运行一次函数
- 该函数每 20 分钟执行一次我期望的操作
我面临的问题是他们必须在特定时间启动的功能。基本上,直到我打开门户并在 Azure Function 上执行某些操作(例如打开其中一个的监视器),它们才会启动。
从代码上看,所有带定时器触发的函数都是这样定义的:
[FunctionName("invoiceMonthlyGeneratorTimer")]
public void Run([TimerTrigger("%Timers:GenerateMonthlyInvoices%")] TimerInfo myTimer)
{
// ..
}
[FunctionName("invoiceDunningTimer")]
public async Task Run([TimerTrigger("%Timers:DunningTimer%")] TimerInfo timer)
{
// ...
}
定时器的配置在设置文件中,如:
"Timers": {
"DunningTimer": "0 0 4 * * *",
"GenerateMonthlyInvoices": "0 0 4 * * *"
}
惊讶于我早上没有收到任何电子邮件,我检查了 Application Insights 并没有找到任何与计时器功能相关的日志。
然后,我在门户中打开 Azure Functions,单击一个功能,然后神奇地收到了电子邮件。在日志中,我发现了类似以下的相同日志:
触发器详细信息:UnscheduledInvocationReason:IsPastDue,OriginalSchedule:2020-07-24T05:00:00.0000000+00:00
正如一个小伙子在我上一篇文章的评论中所建议的那样,定时器触发函数会发生冲突并且不会启动。这似乎很烦人。我还在Github 上打开了一个问题。
Azure Functions 中的计时器触发函数是否有任何类型的指南?有没有人和我遇到过同样的问题?
【问题讨论】:
标签: azure timer azure-functions