定时器触发器运行两次的 Azure 函数

Chr*_*ina 3 azure crontrigger azure-functions

当我登录到 Azure 门户时,我遇到了类似于 Azure Function 计时器运行两次的情况 ,但到目前为止,那里的解决方案对我不起作用。

我的函数(用 Node 编写)在计时器上运行(每 15 分钟一次)。在 Application Insights 和 Azure 门户监视器日志中,我每 15 分钟就会看到一次调用,正如预期的那样(可能是由于采样)。但是,输出发生了两次(我正在将记录写入 Cosmos 集合)。当我观看函数的实时日志时(在门户中,导航到函数代码并从屏幕底部拉出日志),我可以看到它运行了两次,非常接近。下面是示例日志。间隔重叠,所以我不认为这是 CRON 问题(但我不是 CRON 专家)。

我确实考虑过 runOnStartup。我不确定这是否默认为 false,因此我将其设置为 false 并重新启动。重启后同样问题。(我仍然对此表示怀疑,因为一分钟计时器上的类似功能应用程序按预期运行)。

我还尝试过从门户手动运行该功能。当我这样做时,它只运行一次。

提供 Azure 函数 github wiki 上请求的信息:

  1. 我正在使用消费计划
  2. 不确定需要多少信息 - 我们使用 Azure DevOps 管道和 Kudu。
  3. v2(预览版)运行时
  4. 未设置 WEBSITE_TIME_ZONE
  5. 我的 CRON 表达式:0 */15 * * * * 我对其含义的期望:函数应每 15 分钟运行一次。
  6. 不适用
  7. 提供两个从紧密相连的开始 -

    • 调用 ID:4e142315-60e3-420d-b71a-9990683ba5aa
    • 调用日期时间:2019-04-18T17:45:00.0044464+00:00
    • 地区:美国东部

    • 调用 ID:4c6f4e7a-1e9d-4278-b3c6-0a2b5310199c

    • 调用日期时间:2019-04-18T17:45:00.0131739+00:00
    • 地区:美国东部

显示两个重叠调用的示例日志记录(为简单起见,对实际日志文本进行了轻微编辑):

2019-04-18T17:45:00.004 [信息] 执行“Functions.unassignDriverPermits”(原因=“计时器于 2019-04-18T17:45:00.0044464+00:00 触发”,Id=4e142315-60e3-420d-b71a- 9990683ba5aa)

2019-04-18T17:45:00.013 [信息] 执行 'Functions.unassignDriverPermits' (原因='计时器于 2019-04-18T17:45:00.0131739+00:00 触发',Id=4c6f4e7a-1e9d-4278-b3c6- 0a2b5310199c)

2019-04-18T17:45:33.577 [信息] 记录有关某事的事情

2019-04-18T17:45:33.577 [信息] 记录有关 id 0 的事情

2019-04-18T17:45:33.586 [信息] 执行“Functions.unassignDriverPermits”(成功,Id=4e142315-60e3-420d-b71a-9990683ba5aa)

2019-04-18T17:45:33.281 [信息] 记录有关某事的事情

2019-04-18T17:45:33.282 [信息] 记录有关 id 0 的事情

2019-04-18T17:45:33.294 [信息]执行“Functions.unassignDriverPermits”(成功,Id = 4c6f4e7a-1e9d-4278-b3c6-0a2b5310199c)

Pie*_*Sap 5

我曾经在每天 12:00 运行的函数中遇到过类似的问题。RunOnStartup 设置为 true。该函数按照消耗计划运行,并且通过仅每天运行,该函数会在触发时解除分配并重新启动(在冷启动中)。也许这就是双重调用的原因:一次用于触发器,一次因为它已启动)。通过将 RunOnStartup 设置为 false 可以修复此问题。

确保 RunOnStartup 设置为 false。