连续执行 Azure Function

Executing Azure Function back to back

如果我安排一个定时器触发的 Azure 函数每秒 运行 并且我的函数需要 2 秒来执行,我会连续执行还是某些执行队列最终会溢出?

背景:

我们有一个计时器触发的 Azure 函数,该函数当前每 30 秒执行一次,并正在检查数据库中的新行 table。如果有新行,将处理数据并将行标记为已处理。

如果没有新行,执行速度非常快。如果有 500 个新行(这是我们目前正在获取的最大值),执行大约需要 20-25 秒。

我们想将间隔减少到一秒以减少延迟或行处理。

更新:我想要背靠背执行,我想避免重叠执行。

多个 azure 函数可以同时 运行。这意味着您仍然可以再次触发该功能,而之前触发的功能仍在 运行ning。他们将同时运行。如果您将选项设置为 运行 在 1 个实例上一次仅执行 1 个函数,但看起来不像您想要的那样,它们只会排队。

对于并发,这意味着 2 个函数将同时在数据库上读取相同的 table。所以你应该阅读你的 table 和 UPDLOCK 选项 LINK。这将防止后续触发的函数读取在前一个函数中读取的相同行。

简而言之,您的问题的答案都不是。如果您的功能重叠,默认情况下,您将同时获得多个功能 运行ning。

要实现时间触发器的背靠背执行,请在应用程序设置配置中将WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT和FUNCTIONS_WORKER_PROCESS_COUNT设置为1。这将确保一次只有 1 个函数执行 运行s。看到这个 LINK.