0

我有一个带有时间触发器的函数应用程序,它应该每晚运行一次。该函数看起来与此类似:

    [FunctionName("XName")]
    public async Task RunAsync(
        [TimerTrigger("0 0 0 * * *", RunOnStartup = false)]
        TimerInfo myTimer)
    {
       ...
    }   

由于某些原因,此功能可能需要禁用几天然后再次启用。但是,即使我设置RunOnStartupfalse,即使我在上午 9 点启用了该功能,也会直接触发该功能。

我想阻止它,我该怎么办?

PS 我不想更改 Cron 表达式,因为没有特定日期或特定模式来禁用该功能。这是一件很随意的事情。

4

1 回答 1

0

您可能想要检查对象的IsPastDue属性TimerInfo。它 ...

获取一个值,该值指示此计时器调用是否是由于错过了计划。

您看到的执行可能是因为平台认为它错过了计划发生,因为该功能被禁用并试图弥补丢失的事件。

isPastDue当当前函数调用晚于计划时,该属性为真。例如,函数应用重新启动可能会导致调用丢失。

来源:Azure Functions 的计时器触发器 - 用法

使用该IsPastDue属性来确定触发器是否是当前的,并且仅在IsPastDue是时才执行false

于 2022-02-21T11:27:18.627 回答