簡體   English   中英

HTTP 按需觸發 azure 函數多次調用自身

[英]HTTP Trigger on demand azure function calling itself multiple times

我添加了 http 觸發的 azure 函數並將其部署在函數應用程序中。 函數應用程序僅包含一個此http 按需觸發azure 函數。 功能應用有應用服務計划,而不是消費計划。

此外,功能應用程序版本是 ~1。 這樣超時是無限的。

在 azure 函數代碼中,我正在讀取一個包含數千條歷史記錄的文件並處理這些記錄。 這項任務需要一個多小時的時間。 這是一次性任務。

當我在部署后調用這個 azure 函數時,它被調用,一段時間后我注意到它被再次調用並再次處理已經處理的記錄。

誰能幫我理解azure函數的調用策略,如果azure函數長時間運行沒有任何狀態,它會自己回調嗎?

如果是,如何阻止它再次回調,直到它完成處理。

函數應該是短暫的,它們不應該運行很長時間。函數的優勢在於具有小或可變吞吐量的短期執行。

只要有可能,將大型函數重構為較小的函數集,這些函數集可以協同工作並快速返回響應。 例如,webhook 或 HTTP 觸發器函數可能需要在特定時間限制內進行確認響應; webhooks 需要立即響應是很常見的。 您可以將 HTTP 觸發器負載傳遞到隊列中,以便由隊列觸發器函數進行處理。 這種方法使您可以推遲實際工作並立即返回響應。

看看這個:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-best-practices#avoid-long-running-functions

使用 Durable Functions,您可以輕松支持長時間運行的進程,應用異步 HTTP API 如果您正在處理需要一些時間來處理負載或請求的函數,那么在“應用服務計划、WebJob 或持久函數”下運行是正確的方法。

正如@Thiago Custodio 所建議的,您還需要將大文件拆分為較小的文件,並將它們傳遞給持久函數工作流中的活動。

暫無
暫無

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

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