You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Durable Functions:WaitForInstanceCompletionAsync触发HttpClient超时异常

问题原因与解决方案

你遇到的100秒超时是DurableTask Grpc客户端内部HttpClient的默认超时,和你通过CancellationTokenSource设置的等待超时是两个独立的控制逻辑:你的取消令牌是上层的等待终止信号,但底层Grpc调用到Durable Task后端的请求本身有100秒的默认超时,到点就会触发异常,不受上层令牌影响。修改functionTimeout没用,因为那是函数自身的执行超时,和DurableTask客户端的Grpc通信超时无关。

解决步骤

方法1:通过host.json配置

在项目的host.json中添加DurableTask的Grpc超时配置,将HttpClient超时设置为和你的等待完成超时一致(比如10分钟):

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "grpc": {
        "httpClientTimeout": "00:10:00"
      }
    }
  }
}

方法2:通过代码配置客户端

如果是在Program.cs中注册DurableTask客户端,可以直接在配置项中设置超时:

builder.Services.AddDurableTaskClient(options =>
{
    options.Grpc.HttpClientTimeout = TimeSpan.FromMinutes(10);
});

额外说明

  • 你观察到编排的活动会继续运行是正常的:WaitForInstanceCompletionAsync的取消只是终止了当前函数对编排完成状态的等待操作,并不会主动终止已经启动的编排实例。如果需要在超时后终止编排,需要在捕获取消异常时调用taskClient.TerminateInstanceAsync(instanceId, "超时终止")。
  • 本地环境中该配置同样生效,无需额外调整Grpc通信的localhost设置。

内容的提问来源于stack exchange,提问作者Rick Nijhuis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 15:39:59