簡體   English   中英

耐用 function 超時

[英]Durable function Timeout

我正在使用 Azure Durable Functions.Net Core。

[FunctionName("Calculate")]
public async Task RunOrchestrator(
    [OrchestrationTrigger] IDurableOrchestrationContext context, ILogger log)
{
    await context.CallActivityAsync<object>(FuncConstants.Cal1, null);
    await context.CallActivityAsync<object>(FuncConstants.Cal2, null);
    await context.CallActivityAsync<object>(FuncConstants.Cal3, null);
    await context.CallActivityAsync<object>(FuncConstants.Cal4, null);
    await context.CallActivityAsync<object>(FuncConstants.Cal5, null);   
    await context.CallActivityAsync<object>(FuncConstants.Cal6, null);
    await context.CallActivityAsync<object>(FuncConstants.Cal7, null);
    await context.CallActivityAsync<object>(FuncConstants.Cal8, null);
    await context.CallActivityAsync<object>(FuncConstants.Cal9, null);
}

[FunctionName("Starter_Calculation")]
public static async Task<HttpResponseMessage> HttpStart(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestMessage req,
    [DurableClient] IDurableOrchestrationClient starter,
    ILogger log)
{
    string instanceId = await starter.StartNewAsync("Calculate", null);
    return starter.CreateCheckStatusResponse(req, instanceId);
}

在這里,每個 function 需要超過 5-6 個小時來執行一些邏輯計算(算術運算),因為它們要處理超過 27-30 百萬條數據庫記錄。

I'm getting the error for the first function itself as "Timeout value of 00:30:00 was exceeded by function . In Azure, I'm using Premium App Service Plan , so I can set AlwaysOn .

我有一些問題:

  1. Azure Function 是否最適合這種場景/長時間運行的操作?
  2. 如果是,有什么方法可以在本地測試它而不會出現超時錯誤?

請指教。

如果您使用的是高級或專用(應用程序服務)計划,則 function 的默認超時為 30 分鍾 - 這就是您所要達到的。

您可以通過在 host.json 中配置functionTimeout來擴展它。

對於這些計划中的任何一個,技術上都沒有最大超時時間。 雖然對於高級版,執行只能保證 60 分鍾。

請參閱文檔: https://docs.microsoft.com/en-us/azure/azure-functions/functions-host-json#functiontimeout

使用持久函數避免超時有兩種主要策略:

  1. 通過 host.json 增加超時
  2. 將工作分解成更小的單元,並有更多的活動 function 調用

第二個策略很有價值 - 較小的工作單元可以在發生瞬時故障時為您提供更好的恢復/恢復體驗。 此外,您可以並行化活動 function 調用以減少整體處理時間。

要並行運行多個活動功能,您可以await Task.WhenAll多個活動調用 - 在此處查看文檔中的 Fan Out-Fan In 模式中的示例: https://docs.microsoft.com/en-us/azure /azure-functions/durable/durable-functions-cloud-backup?tabs=csharp#e2_backupsitecontent-orchestrator-function

從您的示例中不清楚,您的活動功能是否需要等待前一個完成(即必須串行鏈接在一起),或者它們是否完全獨立,因此可以並行完成。 但是,Durable Functions 的強大之處在於支持各種模式並為您處理許多底層協調。

暫無
暫無

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

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