在Koa中禁用请求TImeout

时间:2016-10-19 18:05:17

标签: javascript node.js centos koa

我收到连接重置错误。我相当肯定这是来自长时间运行的REST请求,即超时。

 { [Error: socket hang up] code: 'ECONNRESET' }

有没有办法在Koa中禁用请求超时,以便我可以测试这个假设?

我正在运行节点版本5.x,koa 0.10,centOs 6

2 个答案:

答案 0 :(得分:0)

您的请求似乎需要比默认Koa超时更长的时间。默认Koa timeout is 2 minutes

我有类似的问题,一个请求花费的时间超过2分钟。 我在这篇文章中被zeronone表示鼓励,最后这一行帮助了我

ctx.request.socket.setTimeout(5 * 60 * 1000); 

所以路由器中的整个代码看起来像

router.post('/long-request', async (ctx) => {
    // set timeout to 5 minutes
    ctx.request.socket.setTimeout(5 * 60 * 1000); 

    // do some stuf what take long time
    // but less than 5 minutes
});

我真的不建议做超过1分钟的请求,理想情况下在单独的进程中运行繁重的东西,并通过其他请求检查是否完成了工作。

因此,仅用于测试目的可能是好的

答案 1 :(得分:0)

如果要为应用程序服务器设置超时:

let app = new Koa();
let server=app.listen(3000);
server.timeout=5*60*1000;

如果是针对每个请求,如@ m1uan所说:

router.get("/path",async (ctx)=>{
      ctx.request.socket.setTimeout(5 * 60 * 1000); 
})