[英]How to execute long running durable Azure Functions with Azure Data Factory?
我的問題:
解決思路:
問題? A) 如果 ADF 調用 HTTP 啟動器最大 230 超時發生? 或者這沒有最大時間限制? B) 如何使 Durable Function 返回值給 ADF。 (接下來我將請求下一次 ADF 活動的完整狀態)
根據Microsoft 官方文檔,無論您在設置中配置的functionTimeout
設置如何,Azure Functions 都會在 230 秒后超時。 解決方案是使用 Durable Functions 使其成為后台工作。
持久函數與普通 Azure 函數在同一平台上運行,但它們異步運行。 當您觸發 Durable Function 時,它會創建一個后台進程並為您提供一些可以與該進程交互的 URL; 包括一個查詢其狀態。 當您調用它時,它會返回后台作業的狀態以及完成時的數據。
這個想法是通過 HTTP 端點觸發一個 Durable Function,等待它完成然后得到結果。 它是這樣的:
下面是它在 Until 活動中的樣子:
請按照以下步驟操作:
首先,我們使用 Azure Function 活動通過 HTTP 觸發器觸發我們的持久 Function。
然后通過 Until 活動,我們檢查 function 的狀態。
Wait 活動等待大約 30 秒(或不同,取決於您)讓 function 被執行
Web 活動通過調用@activity('StartUntar').output.statusQueryGetUri向 Azure Function 活動返回的 statusQueryUrl 發出請求
Until activity 用表達式檢查 CheckStatus Web activity 的結果@not(or(equals(activity('CheckStatus').output.runtimeStatus, 'Pending'), equals(activity('CheckStatus').output.runtimeStatus, 'Running' ))) 。
它會重復,直到 function 完成或失敗,或者直到超時(在 Timeout 屬性上設置)。
我建議您在 ADF 中使用Webhook 活動,並讓持久的 function 在完成(成功或失敗)后執行回調 URI。 在 ADF 中,這應該比長時間循環更便宜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.