我正在使用sails.js v0.10.5 我有很长的处理控制器动作,完成时间超过2分钟,导致sails服务器超时。如何覆盖此超时持续时间并将其设置为我的值,例如10分钟。请指定在哪个文件中以及需要进行哪些更改以增加sails服务器超时。
答案 0 :(得分:3)
您可以找到延迟启动过程的操作
connect-time
大多数情况下,ORM会导致此类问题。
<强>更新强>
我认为超时由Express提供,如果你想修改它,你可以使用$ npm install connect-timeout --save
1.安装
var timeout = require('connect-timeout');
......
order: [ 'timeout' ....]
2.添加中间件到 http.js
loop
答案 1 :(得分:1)
我的回答与Ryan提供的回答非常类似,但为了清晰起见,我将更多地扩展示例。此外,我还没有看到在那里安装依赖项的必要性。
TL; DR添加修改req
以增加超时的自定义中间件
在/config/http.js
order: [
'startRequestTimer',
'cookieParser',
'session',
'myRequestLogger',
'contentTypeCheck',
'extendTimeout', // <--- The order is somewhat important, added it before the body is parsed without issue
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'router',
'www',
'favicon',
'404',
'500'
],
extendTimeout: function(req, res, next) {
req.setTimeout(300 * 1000); // Increase the request timeout to 5 minutes
return next();
},
// Other custom middleware
如果您根本不想要任何超时,也可以设置req.setTimeout(0)
,但可能会有点冒险。
这将设置所有路线的超时时间。只需将req.setTimeout(<some timeout>)
设置为处理路径的控制器中的第一行,就可以在每个路径的基础上覆盖这个
答案 2 :(得分:0)
yjimk,谢谢您的主意……对我来说先不行,但是我找到了解决方法。
问题出在extendTimeout函数中,这是固定版本:
extendTimeout: (function () {
console.log('Initializing `extendTimeout`...');
return function (req, res, next) {
sails.log.info('extendTimeout to 1h');
req.setTimeout(3600000);
return next();
};
})(),