[英]Azure function & Blob Trigger times out
我很難理解 Function 應用程序是如何工作的。
我的環境如下:Python3.8, Blob Trigger, Cosumption Plan
我正在創建一個應用程序,該應用程序在音頻文件上傳到容器時觸發。 This audio file trigger an Azure function and run "Speech-To-Text" using Azure cognitive service (So my function is waiting for an answer from that service). 我將“FUNCTIONS_WORKER_PROCESS_COUNT”設置為 5,以允許我的每個 function 應用程序實例並行運行多個語音到文本分析。
所以我將 100 個 blob 上傳到我的容器中以檢查我的 function 行為,這是我得到的:
Function 應用程序被觸發並啟動多個服務器(5 個用於 100 個 blob),然后開始為每個服務器處理 1 個 blob,直到我上傳 blob 超過 30 分鍾,然后我得到一個超時。
但我期待這種行為: Function 應用程序被觸發並啟動多個服務器。 每台服務器並行處理 5 個 blob,並在 15 到 20 分鍾內為我的所有 blob 給出答案!
所以我在這里沒有得到兩件事。 W
我希望我很清楚..謝謝你的幫助!
編輯:我剛剛添加了 100 個 Blob,以查看 function 應用程序如何反應,並且我剛上傳的 Blob 正在處理之前我一開始上傳的 Blob。
1.對於你的第一個問題:
據我了解, Python 是單線程運行時。
由於 Python 是單線程運行時,因此 Python 的主機實例一次只能處理一個 function 調用。 對於處理大量 I/O 事件和/或受 I/O 限制的應用程序,您可以通過異步運行函數來顯着提高性能。
FUNCTIONS_WORKER_PROCESS_COUNT
使您在每個主機上運行 5 個 blob 觸發函數是正確的,但是如果您使用相同的資源,它將一個一個運行,這意味着即使您可以同時運行 5 個進程,如果第一個進程是運行您的 function,第二個進程(運行相同的功能)將等待; 如果您的第一個進程正在等待數據進入,則第二個進程將首先運行。
這是一篇文章FUNCTIONS_WORKER_PROCESS_COUNT
的工作原理。
您可以檢查您正在使用多少個工作實例。 如果您有 100 個 blob 來觸發您的 function 和每個工作實例設置 5 個工作進程,它應該啟動 20 個實例來使用請求。 (如有錯誤歡迎指正。)
2.關於你的第二個問題:
這就是 blob 觸發 function 的工作原理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.