Shr*_*r S 2 timeoutexception long-running-processes azure-durable-functions
我正在使用 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);
}
Run Code Online (Sandbox Code Playgroud)
这里,每个函数需要超过 5-6 个小时来执行一些逻辑计算(算术运算),因为它们处理超过 27-3000 万条数据库记录。
我收到第一个函数本身的错误为 "Timeout value of 00:30:00 was exceeded by function。在Azure中,我正在使用Premium App Service Plan,所以我可以设置AlwaysOn。
我有一些问题:
请指教。
如果您使用的是高级或专用(应用服务)计划,则某个功能的默认超时为 30 分钟 - 这就是您所遇到的情况。
您可以通过functionTimeout在 host.json 中配置来扩展它。
对于这两个计划中的任何一个,技术上都没有最大超时。尽管对于 Premium,执行只能保证 60 分钟。
请参阅文档:https ://learn.microsoft.com/en-us/azure/azure-functions/functions-host-json#functiontimeout
有两种主要策略可以避免持久函数超时:
第二个策略很有价值 - 较小的工作单元可以在发生暂时性故障时为您提供更好的恢复/恢复体验。另外,您可以并行活动函数调用以减少总体处理时间。
要并行运行多个活动函数,您可以await Task.WhenAll多个活动调用 - 请查看此处文档中扇出-扇入模式中的示例:https://learn.microsoft.com/en-us/azure/azure-functions /durable/durable-functions-cloud-backup?tabs=csharp#e2_backupsitecontent-orchestrator-function
从您的示例中尚不清楚您的活动函数是否需要等待前一个活动函数完成(即必须串行链接在一起),或者它们是否完全独立,因此可以并行完成。但是,Durable Functions 的强大之处在于支持各种模式并为您处理许多底层协调。
| 归档时间: |
|
| 查看次数: |
4956 次 |
| 最近记录: |