带有计时器触发器的Azure函数:未计划的原因

带有计时器触发器的Azure函数:未计划的原因,azure,timer,azure-functions,Azure,Timer,Azure Functions,在我的Azure函数中,我有26个函数,只有7个带有计时器触发器。我也看到了这一点,但它已经很旧了。微软对此没有任何建议。有些函数有一个计时器触发器,在进程结束时,每个函数都会发送一封电子邮件。我有两种定时器触发器: 每20分钟运行一次函数 在夜间的特定时间运行一次函数 每20分钟,该函数就会执行我期望的操作 我面临的问题是函数必须在特定时间启动。基本上,在我打开门户并在Azure功能上执行某些操作(例如为其中一个打开监视器)之前,它们不会启动 从代码的角度来看,所有带有计时器触发器的函数的定义

在我的Azure函数中,我有26个函数,只有7个带有计时器触发器。我也看到了这一点,但它已经很旧了。微软对此没有任何建议。有些函数有一个计时器触发器,在进程结束时,每个函数都会发送一封电子邮件。我有两种定时器触发器:

每20分钟运行一次函数 在夜间的特定时间运行一次函数 每20分钟,该函数就会执行我期望的操作 我面临的问题是函数必须在特定时间启动。基本上,在我打开门户并在Azure功能上执行某些操作(例如为其中一个打开监视器)之前,它们不会启动

从代码的角度来看,所有带有计时器触发器的函数的定义如下:

[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功能,点击一个功能,神奇地,我收到了电子邮件。在日志中,我发现了如下相同的日志:

触发器详细信息:未计划的休假原因:isplastdue,原始日程:2020-07-24T05:00:00.0000000+00:00

正如一个小伙子在我上一篇帖子的评论中所建议的那样,计时器触发函数将发生冲突,无法启动。这似乎很烦人。我还打开了一个问题


Azure函数中的计时器触发器函数有什么指导原则吗?是否有其他人遇到过与我相同的问题?

对于这个问题,我认为它可能是由一个函数应用程序中的多个函数引起的,正如您之前的帖子所述。我在一个函数应用程序中遇到了http触发器函数和计时器触发器函数的类似问题。代码非常简单。我确认代码中没有错误,但无法按时触发计时器触发功能


是我遇到的类似问题的帖子。解决方法是在不同的函数应用程序中创建函数。对于您的问题,我认为您可以像我上面提到的那样在不同的功能应用程序中创建功能,或者您可以按照上面的步骤在azure portal上提交支持票证。azure支持团队将在这方面帮助您,因为他们可以查看您功能的更多日志详细信息。我认为很难在stack overflow社区获得您想要的帮助。

对于这个问题,我认为这可能是由一个函数应用程序中的多个函数引起的,正如您之前的帖子所提到的。我在一个函数应用程序中遇到了http触发器函数和计时器触发器函数的类似问题。代码非常简单。我确认代码中没有错误,但无法按时触发计时器触发功能


是我遇到的类似问题的帖子。解决方法是在不同的函数应用程序中创建函数。对于您的问题,我认为您可以像我上面提到的那样在不同的功能应用程序中创建功能,或者您可以按照上面的步骤在azure portal上提交支持票证。azure支持团队将在这方面帮助您,因为他们可以查看您功能的更多日志详细信息。我认为很难在stack overflow社区中获得您想要的帮助。

如果在应用程序服务计划中,您需要确保启用了“始终打开”。默认情况下,它在功能应用程序上启用,但最好仔细检查

在消费模式中,不存在总是开着的东西。相反,当计时器到期时,您的功能应用程序应该自动唤醒。要使其工作,您的触发器需要“同步”


有关计时器触发功能应用程序疑难解答的更多详细信息,请参阅本页。

如果在应用程序服务计划中,您需要确保启用了“始终打开”。默认情况下,它在功能应用程序上启用,但最好仔细检查

在消费模式中,不存在总是开着的东西。相反,当计时器到期时,您的功能应用程序应该自动唤醒。要使其工作,您的触发器需要“同步”


有关计时器触发功能应用程序疑难解答的更多详细信息,请参阅此部分。

根据您的经验,Azure功能中可以有多少功能?这方面没有指导方针。我在某个地方看到微软说你可以拥有你想要的任何功能我在Github上发布了一个问题,所以如果其他开发者也有同样的问题@Enrico Yes,微软说我们可以在一个功能应用程序中拥有我们想要的任何功能。但根据一些测试,如果我们在一个功能应用程序中使用多个http触发器和计时器触发器功能,计时器触发器可能会受到影响,无法按时触发。一个函数应用程序中有多少个函数并不重要,我的意思是,如果一个函数应用程序中存在多个http触发器和计时器触发器,则可能会导致问题。@Enrico我可以知道您的函数应用程序使用了哪种方案吗?如果使用消耗
在上,请尝试更改为更高的计划。是的,这是dev中的消费计划,而不是prod中的消费计划。根据您的经验,Azure函数中可以有多少函数?这方面没有指导方针。我在某个地方看到微软说你可以拥有你想要的任何功能我在Github上发布了一个问题,所以如果其他开发者也有同样的问题@Enrico Yes,微软说我们可以在一个功能应用程序中拥有我们想要的任何功能。但根据一些测试,如果我们在一个功能应用程序中使用多个http触发器和计时器触发器功能,计时器触发器可能会受到影响,无法按时触发。一个函数应用程序中有多少个函数并不重要,我的意思是,如果一个函数应用程序中存在多个http触发器和计时器触发器,则可能会导致问题。@Enrico我可以知道您的函数应用程序使用了哪种方案吗?如果使用消耗,请尝试更改为更高的计划。是的,这是dev中的消耗计划,而不是prod.Enrico中的消耗计划,这是否意味着同步触发器确实解决了此问题。如果是,则此问题更像是部署问题。我记得当我使用VS代码部署函数时,同步会触发日志行。在那个问题出现之前,您是如何进行部署的?您最终对同步触发器应用了哪些更改?Enrico,这是否意味着同步触发器解决了这个问题。如果是,则此问题更像是部署问题。我记得当我使用VS代码部署函数时,同步会触发日志行。在那个问题出现之前,您是如何进行部署的?您最终对同步触发器应用了哪些更改?这是否回答了您的问题?这回答了你的问题吗?