azure Webjob TimerTrigger,强制调度

azure Webjob TimerTrigger, force scheduling

我有一个 azure webjob TimerTrigger。

我们可能会被引导以某种方式停止 webjob(例如更改 appSetting,中止 webjob)。

网络作业在 Azure 中定义为 TimerTrigger。在 webjob 的 appSettings 中有 AzureWebJobsDashboard 和 AzureWebJobsStorage 的存储帐户。 Web 作业在一天中的特定时间执行。 Web 作业的执行可能会持续 5 或 6 个小时。存储帐户(约13000)和存储中有大量文字table。

问题是:

重新启动 webjob 时,通常会出现 UnscheduledInvocationReason: IsPastDue, OriginalSchedule。我想避免这种情况,即 webjob 的下一次执行将根据 timerTrigger webjob 的 cron 表达式完成。

这可能吗?如果可以,该怎么做?

有什么想法吗?

此致。

如果我理解正确,您可以使用 RunOnStartup = false(默认)和 UseMonitor = false

Timer trigger for Azure Functions

Parameter Description
RunOnStartup If true, the function is invoked when the runtime starts. For example, the runtime starts when the function app wakes up after going idle due to inactivity. when the function app restarts due to function changes, and when the function app scales out. So runOnStartup should rarely if ever be set to true, especially in production.
UseMonitor Set to true or false to indicate whether the schedule should be monitored. Schedule monitoring persists schedule occurrences to aid in ensuring the schedule is maintained correctly even when function app instances restart. If not set explicitly, the default is true for schedules that have a recurrence interval greater than or equal to 1 minute. For schedules that trigger more than once per minute, the default is false.

有几种方法可以设置这些值,但是可以通过它自身的属性进行设置

[FunctionName("MyLovelyHorseFunction")]
public static void Run(
  [TimerTrigger(
     "0 */5 * * * *",
     RunOnStartup = false,
     UseMonitor = false)]
  TimerInfo myTimer,
  ILogger log)
{
   ...
}

另请注意,您可以明确检查逾期(这可能会或可能不会帮助您,具体取决于您的需要)

if (myTimer.IsPastDue)
{    
    ...
}