我有一些第三方API运行大约需要30分钟才能返回结果的函数(它们会进行一些冗长的计算)。 现在,如果我使用Nodejs通过适当的回调调用这样的API,默认情况下Nodejs会等待30分钟让函数返回结果还是会超时? 如果超时,有没有办法增加等待时间?
答案 0 :(得分:3)
我假设您使用express
如果您使用快递,则可以添加以下代码以增加等待时间。
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
server.timeout = 1000;
或者您可以使用纯http
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;
答案 1 :(得分:2)
Linux的默认值可以使用20秒到120秒之间的任何内容作为超时 http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout
根据您使用的请求库,您可能在设置超时时使用不同的语法。我个人非常喜欢request
,请参考https://github.com/request/request。
request.get('http://10.255.255.1', {timeout: 1500}, function(err) {
console.log(err.code === 'ETIMEDOUT');
// Set to `true` if the timeout was a connection timeout, `false` or
// `undefined` otherwise.
console.log(err.connect === true);
process.exit(0);
});
我不认为NodeJS功能本身会超时。