我有一系列需要上傳的文件。上傳每個文件時,將對其執行操作。當所有文件上傳時,我想對所有不同的文件類型執行一項任務。從技術上講,該流程可以在任何文件上傳後運行,但如果我上傳了一百個文件,我不希望它運行100次。當任務列表完成時運行任務
我正在使用Azure函數,所以這將不得不以某種方式觸發,無論是通過blob,table,queue或timer觸發器(或其他觸發器)。
這是我對我將如何做到這一點的想法:
- 推新文件Blob存儲
- 一滴激活觸發器
- 文件處理
- 按文件類型表存儲
- 清除隊列
- 將標誌按可見性排隊爲1分
- 隊列觸發,與
IQueryable<TableEntity>
作爲附加輸入延遲- 獲取所有表項
- 上的每個文件類型執行任務(表條目)從表
- 刪除處理的條目
我不喜歡不得不重置que ue,但是如果X文件在最後一分鐘的處理中上傳,那麼下一個任務將運行X次,這是浪費資源的情況,特別是在X很高的情況下。所以在這種情況下,最多隻能有一個隊列中的項目。
我一直認爲具有可見性延遲的blob觸發器可能會更有意義,但據我所知,這並不存在。
那麼這是正確的方法來解決這個問題,有什麼可用的?有沒有更好的辦法?
你能解釋一下你想要在不同文件類型下運行的操作嗎?它會更新文件嗎?閱讀文件?它可以在同一個文件上多次運行嗎? –
讓我們假設一個研究實驗室刪除一些文件。 blob觸發器會遍歷所有新文件並對文件進行標準化。當所有標準化工作完成後,我們開始在每個研究的基礎上進行更復雜的處理和分析(並且可能會有多個研究更新)。我可以爲m項研究運行分析n次嗎?大概。但是我只需要處理m次就可以節省大量的資金和資源。它也簡化了監控故事,所以如果發生錯誤,我們不會在同一研究中得到n個錯誤。 –
我認爲這是一個非常奇怪的設計,你正在與。你如何確保在1分鐘窗口內上傳的文件屬於同一組文件?如果兩位研究人員同時上傳呢? 也許你應該上傳文件集在不同的文件夾或簡單地上傳所有文件作爲一個zip(如果文件大小允許) – sjkp