【问题标题】:Azure Function fires multiple times for the same Blob storage eventAzure Function 为同一个 Blob 存储事件触发多次
【发布时间】:2020-01-22 14:12:50
【问题描述】:

我的 Python Azure Function 配置文件 (function.json) 定义了一个 Blob 存储触发器。

当 Azure Function 唤醒时(即 Live Metrics 中显示的服务器在休眠一段时间后变为联机状态),它会处理所有现有的 blob,而不管哪些 blob 已经生成了触发事件。

我注意到azure-webjobs-hosts/blobreceipts 文件夹中填充了sandboxhost637nnn 文件夹。 sandboxhost 文件夹会创建每个 Azure Function 唤醒事件。这样,函数就会忘记以前处理的 blob(没有找到旧的收据)。在过去(2019 年 12 月),我记得包含所有收据的唯一 webjobs-hosts 文件夹会在调用中持续存在。

【问题讨论】:

  • 它处理所有现有的 blob?但它应该由添加或删除触发。你能提供日志吗?
  • 触发后尝试将触发该功能的blob移动到另一个不同的容器/目录,然后看这个问题是否消失。这似乎是旧版本的问题。

标签: python azure azure-functions azure-blob-storage azure-blob-trigger


【解决方案1】:

解释为什么会这样:

无论您的环境如何,根据设计,blob 触发器都会通过在 azure-webjobs-hosts 容器中维护 blob 收据来跟踪新的和更新的 blob。这些收据通过它们的 **eTags** 与您的 Functions 运行时的 **host ID** 相关联。

当您的函数唤醒时,它会导致您之前拥有的 **host ID and the eTag->host ID correlations** 的更改将不再适用,这将导致新主机重新处理您现有的所有 blob - 您观察到的行为.

建议改用事件网格触发器,或者为您的函数应用使用 Azure 应用服务基本计划,这将更昂贵。

补充参考:

https://github.com/Azure/azure-webjobs-sdk/issues/1327

希望对你有帮助。

【讨论】:

    【解决方案2】:

    我不确定你发生了什么事。不过现在应该不会再出现这个问题了。

    这是一个老问题。并且sdk有更新。

    BlobTriggers 现在只会被处理一次,看看这个:

    https://azure.microsoft.com/zh-cn/blog/announcing-the-0-5-0-beta-preview-of-microsoft-azure-webjobs-sdk/

    可能是您的问题是一个新问题。但是您需要提供您使用的日志和 SDK。然后我们可以帮助您解决这个问题。如果您稍后更新,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-02
      • 2021-10-08
      • 2021-11-05
      • 2019-07-25
      • 2020-04-21
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      相关资源
      最近更新 更多