我已经多次使用一种方法在相同的文件上运行存储触发器,方法是进入我的存储帐户并删除在‘azure-webjobs’>主机‘>’blobs‘>’函数应用程序名称‘’> 'Blob触发器名称‘>中找到的Blob blobs=’blobs 10‘>类.
我认为这是我所需要担心的,以便能够再次在相同的文件上运行我的函数,但是,我肯定遗漏了一些东西,因为这看起来非常不一致。
据我所知,每当触发器在一个文件上运行时,就应该在与处理该文件的函数相关的be文件夹中创建另一个文件。我的猜测是,这个新创建的文件中的“b头收据”保存了所有的数据,以防止该函数再次运行在同一文件(如文件的电子标签?等等)。所以,我的想法是,如果我只删除在文件夹中找到的任何东西,我就可以再次运行我的函数了。但是,有时在我的函数运行完数千个文件之后,我会去检查一下‘blob’中的文件,发现里面只有一个文件/blob。或者,还有很多文件我必须从那里删除,但是即使这样做了,我的函数似乎也不会再次运行每个文件。总的来说,这种方法似乎奏效了,但只在一定程度上起作用。
一定有什么东西我错过了。为了在所有相同的文件上再次运行我的blob存储触发器,我还需要处理一些其他的东西。有什么想法/建议吗?
发布于 2022-03-23 08:36:45
是的,Azure函数将多次运行在相同的文件上。如果已经存在,它将更新相同文件中的内容。
在更新相同文件上的内容之前,将检查文件是否在内部存在,如果存在,则将失败操作,直到我们在手动上传Blob时通过代码级别或门户提供对覆盖的权限。
我试图通过上传相同的文件来运行Azure函数Blob触发器。当第二次上传相同的文件时,它要求文件存在,所以overwrite或do not upload选项。如果我们选择了覆盖,那么函数将运行触发器并更新内容。

多个文件的:

第一次上传15个文本文件。第二次上传25个文本文件(15个相同,10个是新文件)
为现有文件上传并接受覆盖生成的覆盖选项。
函数已经运行了数千个文件--我将检查一下‘blob’中的文件,并发现其中只有一个文件/blob。或者,还有很多文件我必须从那里删除,但是即使这样做了,我的函数似乎也不会再次运行每个文件。
在运行Azure函数期间,当您上传大量文件时,您必须编写如下逻辑:
如果存在blob文件,则将其他上传作为新文件覆盖到blob容器中,并在函数.中处理文件数据。
对于这个逻辑,请参考Overwriting the Blob Storage in Azure Function Code,checking if a blob exists in Azure Storage。
此外,one of the workarounds还将上传多个JSON文件,并与blob存储并行。
如果您用Azure函数代码手动编写逻辑以覆盖现有文件,则BlobStorage触发器函数将在所有文件上运行。
https://stackoverflow.com/questions/71574763
复制相似问题