2015-05-05 3 views
4

Я использую sails.js v0.10.5.
У меня есть длительное действие контроллера контроллера, для завершения которого требуется более 2 минут, что приводит к тайм-ауту сервера парусов. Как я могу перезаписать эту длительность таймаута и установить ее на значение, равное 10 минутам. Укажите, в каком файле и какие изменения мне нужно внести, чтобы увеличить тайм-аут сервера парусов.Время ожидания запроса сервера Sails.js

ответ

3

Вы можете узнать, какие задержки действия отправным процесс

sails --verbose lift 

большую часть времени, ORM вызывает такого рода проблемы.

UPDATE я думаю, что тайм-аут предоставляется по экспресс, если вы хотите изменить его, вы можете использовать connect-time

1.Install

$ npm install connect-timeout --save 

2.Add промежуточное программное обеспечение для HTTP. js

var timeout = require('connect-timeout'); 
...... 
order: [ 'timeout' ....] 
+3

Спасибо @Ryan Wu, но мне нужно увеличить продолжительность таймаута от 2 минут до 10 минут. Поскольку для вызова требуется это много времени для обработки. Я достиг этого, следуя коду в контроллере 'var myAction = function (req, res) { \t req.connection.setTimeout (10 * 60 * 1000); // код действия/обработка res.ok (jsonData) } '' Но я должен написать его для каждого действия. У меня есть опция configoutaion, чтобы перехватить таймаут по всему миру. –

+0

Я обновил ответ! –

+1

Все еще не нашел способ переопределить тайм-аут по всему миру ... Пробовал изменения http.js в промежуточном программном обеспечении (но без успеха). Есть ли другое решение? – EfiBN

0

Мой ответ довольно аналогично предоставленному Райаном, но я немного расширю этот пример для ясности. Также я не вижу необходимости в установке зависимостей.

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>) в качестве первой строки в контроллере, обрабатывающем маршрут

Смежные вопросы