gpt4 book ai didi

c# - Azure函数: timer trigger and consumption plan issue

转载 作者:行者123 更新时间:2023-12-03 17:11:16 25 4
gpt4 key购买 nike

在我的开发环境中,我有一个包含 21 个函数的 Azure Functions,应用程序计划是消耗。

某些函数具有计时器触发器,并且在进程结束时每个函数都会发送一封电子邮件。我有两种类型的计时器触发器:

  • 每 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 * * *"
}

总的来说,这种方法在开发环境中是有效的,在生产环境中也运行得很好。

因为每个功能都会发送一封电子邮件,所以我希望每天早上都能在收件箱中找到一些电子邮件,但这种情况并没有发生。然后,我打开 Azure 门户查看日志和监视器。

在门户中打开 Azure 功能。

enter image description here

打开函数的监视器

enter image description here

瞧,几秒钟后,我开始收到所有服务的电子邮件!在生产环境中,我没有开发中的所有功能,因为我想在部署之前进行测试。在产品中,功能运行良好并在正确的时间启动。

如果我查看 Application Insights,我只能找到打开监视器时的日志。

enter image description here

日志中有一件有趣的事情:

Trigger Details: UnscheduledInvocationReason: IsPastDue, OriginalSchedule: 2020-07-24T05:00:00.0000000+00:00

enter image description here

更新

显然,在同一个 Azure Functions 中不能有多个计时器触发器。我在 Github 上打开了一个问题,所以如果其他开发者也面临同样的情况。与 HTTP 触发器类似的东西,看看这个 post .

最佳答案

您的函数应用中的函数太多,它们可能会相互交互。我遇到了类似的问题,在这种情况下,计时器触发器在一个功能应用程序中起作用并且不起作用。但是当我将它们部署到不同的功能应用程序时,它们工作得很好。因此您可以尝试将第二个函数部署到另一个函数应用。

并且我建议您将此问题报告给微软,他们可以了解有关此问题的更多信息,并且可能有更好的解决方案。

关于c# - Azure函数: timer trigger and consumption plan issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63069161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com