当前位置: 首页 > 知识库问答 >
问题:

Azure函数为同一Blob存储事件触发多次

梁明辉
2023-03-14

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

当Azure功能唤醒时(即,Live Metrics中显示的服务器在一段睡眠时间后变为在线),它将处理所有现有Blob,而不管哪些Blob已经生成触发事件。

我注意到< code > azure-web jobs-hosts/blob receipts 文件夹中填充了< code>sandboxhost637nnn文件夹。每个Azure函数唤醒事件都会创建一个新的沙盒主机文件夹。这样,该函数会忘记以前处理过的blobs(没有找到旧的收据)。在过去(19年12月),我记得有一个包含所有收据的独特的webjobs-hosts文件夹在调用之间保持不变。

共有2个答案

常英资
2023-03-14

我不知道你发生了什么事。但是这个问题现在应该不会再发生了。

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

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

https://azure . Microsoft . com/zh-cn/blog/announding-the-0-5-0-beta-preview-of-Microsoft-azure-webjobs-SDK/

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

邢臻
2023-03-14

要解释为什么会发生这种情况:

无论你的环境如何,Blob 触发器在设计上都会跟踪新的

当您的函数唤醒时,它将导致您的< code > * *主机ID和eTag-的更改

建议改为使用事件网格触发器,或者为功能应用程序使用Azure应用程序服务基础计划,这将更加昂贵。

附加参考:

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

希望有帮助。

 类似资料:
  • Azure函数存储帐户Blob容器触发器 在我们的一个用例中,我正在为具有以下条件的存储帐户容器中的任何活动寻找Azure函数触发器 < li >具有特定命名约定的容器(名称如xxxx-input) < li >它应该自动检测是否创建了新的容器(具有特定的命名约定) < li>

  • 我有一个通过使用powershell用ARM模板创建的azure函数。 函数是在消耗计划上运行的blob触发器类型函数,用于将blob从源存储复制到目标存储。 当我将blob上传到源存储时,它不会被复制。这意味着功能没有被执行。 当我通过门户浏览函数应用时,将调用函数并按预期执行所需的操作。此后,它工作正常。仅当函数应用最初由 Powershell 脚本使用 ARM 模板部署时,才会发生这种情况。

  • 您好,我正在创建一个新的blob触发的azure函数,我想了解函数头中“Connection=”参数的作用: 我所做的是完全删除该参数,在我将其部署到我的azure订阅后,它就可以正常工作了。因此,我想知道如果我没有使用连接参数指定任何特定帐户,该函数如何确定要使用哪个存储帐户。 这就是我部署函数的方式:

  • 我有一个 Blob 存储容器,其中配置了事件网格触发器(Blob 已创建)。我正在通过数据工厂加载此 blob 存储文件,很多时候,许多文件可能会在一次尝试中出现在此 blob 中。也许我们可以举一个20个文件的例子。 好消息是我的事件网格触发器启动了,函数app被调用。然而,我发现有时对于同一个文件,事件网格触发器被触发了不止一次。 在这20个文件中,很少有文件非常大,比如300 MB,但其他文

  • 我正在调查可用于 Azure 存储的 Webhook/事件触发器。不幸的是,文档似乎专注于演示如何让 Azure 门户为我构建函数,这不允许进行本地测试。 特别是,我正在研究捕获已删除 Blob 的时间。 我的使用示例(Azure函数): 当我从存储容器中删除一个blob时,问题出现了:函数没有被触发。 然而,我发现,如果我在控制台中点击<code>CTRL C</code>则该函数被触发。 有人

  • 我的Azure Functions事件网格触发器没有触发。我是这么做的。 Key Vault设置为将事件报告给EventGrid系统主题 此主题由将事件传递到Azure Function的订阅订阅 函数有一个事件网格触发器(见下文,默认由门户创建): 我用谷歌搜索了一下,对于这样的入门级方案,没有更多的指导。我想的也许是授权...订阅如何触发该函数?在此过程中(通过GUI /门户配置),没有任何关