Sails.js服务器请求超时

时间:2015-05-05 06:51:38

标签: sails.js

我正在使用sails.js v0.10.5 我有很长的处理控制器动作,完成时间超过2分钟,导致sails服务器超时。如何覆盖此超时持续时间并将其设置为我的值,例如10分钟。请指定在哪个文件中以及需要进行哪些更改以增加sails服务器超时。

3 个答案:

答案 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();
  };
})(),