簡體   English   中英

Azure Functions 為同一個 Blob 存儲事件觸發多次

[英]Azure Function fires multiple times for the same Blob storage event

我的 Python Azure Function 配置文件 ( function.json ) 定義了一個 Blob 存儲觸發器。

當 Azure Function 喚醒時(即實時指標中顯示的服務器在休眠一段時間后變為在線),它會處理所有現有的 blob,而不管哪些 blob 已經生成了觸發事件。

我注意到azure-webjobs-hosts/blobreceipts文件夾中填充了sandboxhost637nnn文件夾。 每個 Azure Function 喚醒事件都會創建一個新的sandboxhost文件夾。 這樣函數就忘記了以前處理過的 blob(沒有找到舊的收據)。 在過去(2019 年 12 月),我記得包含所有收據的唯一webjobs-hosts文件夾在調用過程中持續存在。

解釋為什么會這樣:

無論您的環境如何,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

希望能幫助到你。

我不確定你怎么了。 但是現在應該不會再出現這個問題了。

這是一個老問題。 並且 sdk 有更新。

BlobTriggers 現在只會被處理一次,看看這個:

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

可能是您的問題是新問題。 但是您需要提供您使用的日志和SDK。 那么我們可以幫助您解決這個問題。 如果您稍后更新,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM