azure - 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://docs.microsoft.com/en-us/azure/azure-functions/functions-host-json#functiontimeout https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale #暂停
解决方案
这是一种将长时间运行的任务分解为多个较短运行的任务,然后将它们链接在一起的方法,以便每个任务完成后都可以调用工作流中的下一个任务。这基本上可以让您摆脱 Azure Functions Runtime 施加的有限时间限制,该限制限制了 Function 在自动终止之前可以执行的最长时间。
所有这些模式都必须执行需要自定义代码的任务,并且它们需要以异步方式运行,可能很长一段时间,Azure Durable Functions 绝对是要走的路。这篇博文描述了我们如何通过 Webhook 操作模式通过 Durable Functions 实现处理长时间运行任务的通用方法。
推荐阅读
- regex - VS Code 多行搜索和替换 HTML / XML 标签?
- database - 使用 :new 和 :old 在 SQL 中引用不同的表
- mysql - 如何在mysql中更新多个表中的多行
- python - 如何为我的 PyCharm Python 项目安装 yaml 包?
- square - “授权码已被认领”错误
- node.js - Angular 7 和 Nodejs 的验证表单问题
- db2 - 在 DB2 SQL 中,如何使用 FETCH FIRST (n) ROWS ONLY..返回可变数量的行?
- java - 如何解决安装pycharm后出现的启动错误?
- ios - wkwebview 链接在点击时不会打开
- node.js - MongoParseError:在 parseConnectionString 处未转义的登录权限部分