我收到连接重置错误。我相当肯定这是来自长时间运行的REST请求,即超时。
{ [Error: socket hang up] code: 'ECONNRESET' }
有没有办法在Koa中禁用请求超时,以便我可以测试这个假设?
我正在运行节点版本5.x,koa 0.10,centOs 6
答案 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);
})