首页 > 解决方案 > ActivityTrigger Durable Function:通过 Azure Function App 和消费计划的最大执行时间限制

问题描述

ActivityTrigger 持久功能是否仍通过以下消耗计划限制为 10 分钟的最大超时持续时间:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale#timeout

我遇到了下面的示例,它似乎运行了 10 分钟以上。

[FunctionName("A_SimulateLongRunningTask")]
public static async Task<object> TaskExecutor([ActivityTrigger] string taskInput, TraceWriter log)
{
   dynamic longRunningTask = JsonConvert.DeserializeObject(taskInput);

   //Simulate a long running task, based on the provided duration
   //taskDurationInSeconds is 700 seconds, which is more than max of 10mins via consumption plan
   await Task.Delay(TimeSpan.FromSeconds((int)longRunningTask.taskDurationInSeconds));
   return true;
}

https://toonvanhoutte.wordpress.com/2018/08/19/perform-long-running-logic-apps-tasks-with-durable-functions/

https://docs.microsoft.com/en-us/azure/azure-functions/functions-host-json#functiontimeout https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale #暂停

标签: azureazure-functionsazure-functions-runtime

解决方案


这是一种将长时间运行的任务分解为多个较短运行的任务,然后将它们链接在一起的方法,以便每个任务完成后都可以调用工作流中的下一个任务。这基本上可以让您摆脱 Azure Functions Runtime 施加的有限时间限制,该限制限制了 Function 在自动终止之前可以执行的最长时间。

所有这些模式都必须执行需要自定义代码的任务,并且它们需要以异步方式运行,可能很长一段时间,Azure Durable Functions 绝对是要走的路。这篇博文描述了我们如何通过 Webhook 操作模式通过 Durable Functions 实现处理长时间运行任务的通用方法。


推荐阅读