注意:尽管它可能看起来重复,但我的问题有所不同,我要求您先阅读完整的描述,然后再通过阅读问题标题匆忙标记问题。
我于2017年5月24日在官方“Azure function is not triggering on scheduled time”git仓库上打开了“azure-webjobs-sdk-script”问题,但还没有回复。所以我在这里再次问这个问题。
我在消费计划中使用 azure 函数,并通过在 function.json 中设置以下 cron 表达式来安排它在世界标准时间 (UTC) 的每个凌晨 4 点执行:
{
"bindings": [
{
"name": "myTimer",
"type": "timerTrigger",
"direction": "in",
"schedule": "0 0 4 * * *"
}
],
"disabled": false
}
只有当我登录门户或单击函数 Blade 时,Azure 函数才会按时执行。当我从门户注销时,它不会调用(建议系统监听器或函数转到休息一段时间后 sleep )。
他们的official documentation指出消耗计划中的函数不需要任何其他设置(例如“始终开启”)来保持函数处于事件状态,根据传入事件的数量动态添加和删除 Azure Functions 主机的实例。。因此,根据文档,我无需配置其他设置即可执行消费计划中的功能。
我尝试了什么?
从“Timer triggered azure function not getting triggered”问题中,我重新检查并确保了我的计划(消费计划)和时区。 (我希望它以 utc 运行,因此不需要显式设置)
从“#1445: Azure function timer trigger not firing”git问题中,我检查了是否只是没有出现的日志。但我确信,它不是日志,而是实际的功能不会被触发,除非我打开我的门户或手动触发它。
如果我将计划更改为更接近的递归调用,我尝试检查是否存在此行为 - 我计划函数每 2 小时执行一次,并且即使我注销或执行此计划,该计划也能完美运行不手动唤醒功能。这意味着,当计划设置为以较大的间隔运行时(在我的例子中是每天每天),会出现一些问题
最佳答案
如 #1534 中所述,在新功能应用程序中完全删除并重新部署该功能并没有重现该问题。因此,删除函数和/或函数应用程序并重新部署它们应该会使事情正常进行。同时,Azure团队宣布添加internal logging这将有助于将来的诊断。
关于Azure 函数未按计划时间触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44254607/