计时器触发器上的 Azure 函数单例...正在执行存储过程

Azure functions singleton on timer trigger...executing stored procedure

我们让 Azure Functions 每 2 秒执行一次存储过程。大多数情况下,90% 的时间存储过程将在不到 1 秒内完成。但是如果 json 很大并且有很多值,有时它会运行超过 2 秒。我不希望 Azure 功能在 运行 完成之前启动。

    [FunctionName("OrderOIHSync")]
    public static async Task RunSingle([TimerTrigger("*/2 * * * * *")]TimerInfo myTimer, ILogger log)

这是正确的方法还是我如何控制,所以在异常情况下不会触发 azure 函数。根据文档计时器触发器说单例,但我看到它触发并导致一些数据问题的情况。

感谢任何建议。

如果仍有未完成的调用,定时器触发功能将不会再次触发运行。有一个内部计时器来跟踪它。在您的函数完成执行后,调用该函数时,计时器将再次启动。因此,在任何给定时刻,只有一个 Azure 函数实例是 运行.

If your function execution takes longer than the timer interval, another execution won't be triggered until after the current invocation completes. The next execution is scheduled after the current execution completes.

Check here

现在您可以使用 属性“IsPastDue”并相应地控制执行。 IsPastDue 标志被传递给您的 azure 函数以指示计时器是否过期

The IsPastDue property is true when the current function invocation is later than scheduled. For example, a function app restart might cause an invocation to be missed.

引自here

{
"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

}