0

我想通过顺序执行来执行 Azure 计时器触发器。

假设我有间隔 5 分钟的 C# Timer 触发器。但函数执行需要时间为 8 分钟。这意味着在第一次调用完成之前,第二次触发器会启动另一个线程。我怎样才能避免这种情况?

4

2 回答 2

8

默认行为是在任何给定时刻只有一个 Azure 函数实例将运行。引用维基-

如果您的函数执行时间超过计时器间隔,则在当前调用完成之前不会触发另一个执行。在当前执行完成后安排下一次执行。

这是测试功能的日志输出,它计划每 30 秒运行一次,但它本身需要 40 秒才能执行。

C# 定时器触发函数触发时间:8/4/2017 2:21:50 PM。C# 定时器触发函数执行于:8/4/2017 2:22:30 PM。执行次数 1

C# 定时器触发函数触发时间:2017 年 8 月 4 日下午 2:22:30。C# 定时器触发函数执行于:8/4/2017 2:23:10 PM。执行次数 2

C# 定时器触发函数触发时间:8/4/2017 2:23:10 PM。C# 定时器触发函数执行于:8/4/2017 2:23:50 PM。执行次数 3

于 2017-08-04T10:26:36.257 回答
0

您可以设置时间触发函数将消息放入队列,并让另一个函数(队列触发)为队列中的每条消息运行处理。可以限制从队列中获取的消息数量,请在此处查看:在 Azure Function App 中限制 Azure 存储队列处理 然而,每 5 分钟触发 8 分钟的处理听起来像是一个严重的问题。如果是平均处理时间,请仔细考虑。

于 2017-08-04T09:39:26.923 回答