【问题标题】:Azure function occasionally runs twiceAzure 函数偶尔会运行两次
【发布时间】:2020-07-27 08:33:03
【问题描述】:

我有一个在每周一上午 8 点运行一次的计时器上运行的 Powershell 函数 - 它发送电子邮件。它在大多数情况下运行良好,但每隔一段时间就会运行两次:

第二个实例在第一个实例完成的确切时间运行。

我在谷歌上搜索了这个问题,大部分文章都围绕着 runatstartup=true。我从来没有在任何地方设置过,并且检查了函数应用配置和 function.json 并且找不到任何提及它。

【问题讨论】:

    标签: azure-functions


    【解决方案1】:

    来自documentation

    编写无状态函数

    函数应该是无状态的,并且 如果可能的话,是幂等的。将任何所需的状态信息与 你的数据。例如,正在处理的订单可能有 关联国家成员。一个函数可以处理一个基于 该状态,而函数本身保持无状态。

    幂等函数特别推荐与定时器触发器一起使用。 例如,如果您有绝对必须运行一次的东西 一天,编写它以便它可以在一天中的任何时候以相同的方式运行 结果。当没有特定的工作时,该功能可以退出 天。此外,如果上一次运行未能完成,下一次运行应该 从中断的地方继续。

    您可能还应该阅读wiki about reentrancy

    Azure functions guarantees at least once messaging, so multiple executions are possible in certain (though hopefully rare) situations.

    对于您的问题,这意味着跟踪已发送的电子邮件。函数运行时之外的某个地方(即:存储帐户)。当函数在同一天或同一周(取决于您的要求)开始时,从它离开的地方开始。

    这是最佳实践的原因。由于您正在运行作业,因此在运行代码时可能会发生任何事情。服务器可能会崩溃,网络可能会中断,您的功能可能会移动到不同的主机,打补丁,...

    【讨论】:

      猜你喜欢
      • 2015-11-22
      • 2020-11-29
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      相关资源
      最近更新 更多