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

Node.js请求超时设置未生效?Koa服务与Axios客户端问题排查

问题

我有一个基于Koa的服务器,其中包含一个处理时长约3分钟的POST路由。我通过以下代码设置服务器超时:

let app = new Koa();
let server=app.listen(3000);
server.timeout=5*60*1000; // 设置为5分钟

客户端也设置了超时,通过以下代码发送POST请求:

const request = await axios.post('https://somewebsite.herokuapp.com/testkeepalive', {}, {timeout:240000})
console.log('request is ', request)

发送请求后服务器仍返回超时错误,无法按预期执行。

/testkeepalive接口代码

.post('/testkeepalive', async ctx => {
  console.log('request received')
  ctx.request.socket.setTimeout(5 * 60 * 1000)
  ctx.request.socket.setKeepAlive(true)
  await delay(3 * 60 * 1000) // 延迟3分钟后返回响应
  ctx.body = "nice"
  ctx.status = 202
})

客户端错误截图

客户端错误截图

原因与解决方案

你的代码本身没有问题,超时错误的根源在于Heroku平台的默认请求超时限制为30秒——不管你在Koa服务器或客户端设置多长的超时时间,Heroku都会在请求发起30秒后强制切断连接,返回超时错误。

解决办法有两种:

  • 迁移至无此限制的平台:将服务器部署到AWS EC2等支持长请求的平台,并配置好HTTPS SSL证书,即可正常处理3分钟的请求。
  • 继续使用Heroku:需要将长耗时的任务改为后台异步任务,通过队列系统处理,避免让HTTP请求等待任务完成。具体可参考Heroku官方关于后台任务队列的文档指导。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:05:22