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

Python Azure函数为同一Blob存储事件激发多次,python,azure,azure-functions,azure-storage-blobs,azure-blob-trigger,Python,Azure,Azure Functions,Azure Storage Blobs,Azure Blob Trigger,我的Python Azure函数配置文件(Function.json)定义了一个Blob存储触发器 当Azure功能唤醒时(即Live Metrics中显示的服务器在一段睡眠时间后联机),它将处理所有现有Blob,而不管哪些Blob已经生成了触发事件 我注意到azure webjobs主机/blobreceipts文件夹中填充了sandboxhost637nnn文件夹。每个Azure函数唤醒事件都会创建一个新的sandboxhost文件夹。通过这种方式,函数将忘记以前处理过的blob(未找到旧收

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

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


我注意到
azure webjobs主机/blobreceipts
文件夹中填充了
sandboxhost637nnn
文件夹。每个Azure函数唤醒事件都会创建一个新的sandboxhost文件夹。通过这种方式,函数将忘记以前处理过的blob(未找到旧收据)。在过去(12月19日),我记得一个独特的webjobs主机文件夹包含所有收据,在调用过程中保持不变

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

无论您的环境如何,blob触发器都会通过在azure webjobs主机容器中维护blob收据来跟踪新的和更新的blob。这些收据通过它们的
**etag**
与函数运行时的
**host ID**
相关联

当您的函数唤醒时,它将导致您的
**主机ID的更改,并且您以前拥有的eTag->host ID关联将不再适用,这将导致新主机重新处理所有现有blob——您观察到的行为

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

附加参考:


希望能有帮助。

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

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

BlobTriggers现在只处理一次,请查看以下内容:


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

它会处理所有存在的斑点吗?但它应该由添加或删除的事件触发。您可以提供日志吗?尝试在触发函数后将触发该函数的blob移动到另一个不同的容器/目录,然后查看此问题是否消失。这在旧版本中似乎是个问题。