Come modificare il tempo di timeout predefinito della richiesta nodejs?

Sto usando un server Node / Express. Il timeout predefinito di express è 120.000 ms, ma non è abbastanza per me. Quando la mia risposta raggiunge 120.000 ms, la console registrerà POST /additem 200 120006ms e la pagina mostra un errore, quindi voglio impostare il timeout su un valore maggiore. Come potrei farlo?

Suppongo che tu stia usando express , dati i log che hai nella tua domanda. La chiave è impostare la proprietà timeout sul server (il seguente imposta il timeout su un secondo, usa il valore che vuoi):

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

Se non stai usando express e lavori solo con il nodo vanilla, il principio è lo stesso. Quanto segue non restituirà i dati:

 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/'); 

Prova questo:

 var options = { url: 'http://url', timeout: 120000 } request(options, function(err, resp, body) {}); 

Fare riferimento alla documentazione della richiesta per altre opzioni.

Per una richiesta specifica, è ansible impostare timeOut su 0 che non ha timeout fino a quando non riceviamo risposta dal DB o da un altro server

 request.setTimeout(0) 

Per coloro che hanno la configurazione in bin/www , basta aggiungere il parametro timeout dopo la creazione del server http.

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