azure-functions - 计时器触发器上的 Azure 函数单例...执行存储过程
问题描述
我们让 Azure Functions 每 2 秒执行一次存储过程。大多数情况下 90% 的时间存储过程将在不到 1 秒的时间内完成。但是如果 json 很大并且有时有很多值,它会运行超过 2 秒。我不希望 Azure 功能在其运行完成之前启动。
[FunctionName("OrderOIHSync")]
public static async Task RunSingle([TimerTrigger("*/2 * * * * *")]TimerInfo myTimer, ILogger log)
这是正确的方法还是我可以如何控制,所以在异常情况下,天蓝色函数不会触发。根据文档计时器触发器说单例,但我看到它触发并导致一些数据问题的情况。
任何建议表示赞赏。
解决方案
如果仍有未完成的调用仍在运行,则计时器触发函数将不会再次触发。有一个内部计时器来跟踪它。在函数被调用时您的函数完成执行后,计时器再次启动。因此,在任何给定时刻,只有一个 Azure 函数实例会运行。
如果您的函数执行时间超过计时器间隔,则在当前调用完成之前不会触发另一个执行。在当前执行完成后安排下一次执行。
现在您可以使用“IsPastDue”属性并相应地控制执行。IsPastDue 标志被传递给您的 azure 函数以指示计时器是否过期
当当前函数调用晚于计划时,IsPastDue 属性为 true。例如,函数应用重新启动可能会导致调用丢失。
从这里引用
{
"Schedule":{
},
"ScheduleStatus": {
"Last":"2016-10-04T10:15:00+00:00",
"LastUpdated":"2016-10-04T10:16:00+00:00",
"Next":"2016-10-04T10:20:00+00:00"
},
"IsPastDue":false
}
推荐阅读
- php - Laravel:类stdClass的对象无法转换为字符串
- python - 网页抓取,与空间文本在同一分割
- javascript - 如何有效地隐藏链接中的 Href?
- highcharts - Highmap colorAxis 过滤器
- hibernate - 为什么 Propagation.NOT_SUPPORTED 会更改生成的 select 语句?
- xml - 如何在 XSLT 中创建一个增加 1 个 foreach 循环的计数器,我已经嵌套了 foreach 循环
- c# - 如何使用 ASP.NET Core 中的模型验证来验证所需的查询字符串字段
- html - HTML
- javascript - 承诺未解决
- python - lsof 显示很多打开的python文件