如何通过Restify或Azure Web App延长Teams通知Bot的请求超时?
解决Restify+Azure Web App请求超时问题
一、Restify层面的正确配置
你之前直接修改server.server的参数可能没覆盖Restify自身的超时控制,试试以下完整配置:
- 创建Server时指定Restify自身的请求超时
const server = restify.createServer({ requestTimeout: 10 * 60 * 1000 // 10分钟,单位毫秒 });
- 补充Node.js HTTP Server底层超时设置
Restify基于Node.js的http.Server,除了常规超时,还需设置headersTimeout(必须比keepAliveTimeout稍大),避免底层连接提前断开:
// 10分钟+1秒,确保覆盖请求超时时长 server.server.keepAliveTimeout = 10 * 60 * 1000 + 1000; // 10分钟+2秒,防止headers超时触发连接断开 server.server.headersTimeout = 10 * 60 * 1000 + 2000; // 设置请求超时 server.server.setTimeout(10 * 60 * 1000);
二、Azure Web App的超时设置
Azure应用服务网关默认请求超时为230秒(约3分50秒),这个限制会覆盖代码中的设置,必须在Azure端调整:
方法1:Azure门户操作
- 进入你的Web App资源,点击左侧菜单「配置」→「常规设置」
- 找到「请求超时」选项,输入需要的秒数(比如600=10分钟,最大支持900秒=15分钟)
- 点击「保存」,重启Web App生效
方法2:Azure CLI命令
替换参数后执行:
az webapp config set --name <你的WebApp名称> --resource-group <你的资源组名称> --request-timeout 600
方法3:应用设置添加参数
- 进入Web App的「配置」→「应用设置」
- 添加新设置:名称
WEBSITE_REQUEST_TIMEOUT,值600(单位:秒) - 保存后重启应用
注意事项
- 临时延长超时只是权宜之计,建议尽快优化Teams通知的请求逻辑(比如异步处理、队列化发送),避免长时间阻塞请求
- Azure Web App的请求超时最大限制为900秒,无法超过此值
内容的提问来源于stack exchange,提问作者Raso
相关产品推荐
相关产品推荐

