Как изменить время ожидания запроса nodejs по умолчанию?


Я использую узел / экспресс-сервер. По умолчанию тайм-аут express составляет 120 000 МС, но мне этого недостаточно. Когда мой ответ достигнет 120 000 МС, консоль войдет POST /additem 200 120006ms и страница показывает ошибку, поэтому я хочу установить тайм-аут на большее значение. Как бы я это сделал?

4   51  

4 ответа:

Я предполагаю, что вы используете express, учитывая журналы у вас есть в вашем вопросе. Ключ должен установить timeout свойство на сервере (следующее устанавливает время ожидания в одну секунду, используйте любое значение, которое вы хотите):

var server = app.listen(app.get('port'), function() {
  debug('Express server listening on port ' + server.address().port);
});
server.timeout = 1000;

если вы не используете express и работаете только с vanilla node, принцип тот же. Следующие данные не возвращаются:

var http = require('http');
var server = http.createServer(function (req, res) {
  setTimeout(function() {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
  }, 200);
}).listen(1337, '127.0.0.1');

server.timeout = 20;
console.log('Server running at http://127.0.0.1:1337/');

попробуйте это:

var options = {
    url:  'http://url',
    timeout: 120000
}

request(options, function(err, resp, body) {});

смотрите запрос's документация для других вариантов.

для конкретного запроса можно установить таймаут в 0, который не является таймаутом, пока мы не получим ответ от БД или другого сервера

request.setTimeout(0)

для тех, кто имеет конфигурации в bin/www, просто добавьте параметр timeout после создания HTTP-сервера.

var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces
*/
server.listen(port);
server.timeout=yourValueInMillisecond