Node.js NPM请求模块(REST客户端)的默认超时是多少?

Node.js NPM请求模块(REST客户端)的默认超时是多少?,node.js,rest,npm,timeout,Node.js,Rest,Npm,Timeout,下面是我的node.js调用,用于检索一些数据,这需要1分钟以上的时间。这里的超时时间为1分钟(60秒)。我还为延迟设置了一个控制台日志。然而,我已经配置了120秒的超时,但它没有反映。我知道nodejs服务器的默认超时是120秒,但是我仍然从这个模块获得了这个调用的超时(60秒)。请提供您对此的见解 var options = { method: 'post', url:url, timeout: 120000, json: true, headers: { "Co

下面是我的node.js调用,用于检索一些数据,这需要1分钟以上的时间。这里的超时时间为1分钟(60秒)。我还为延迟设置了一个控制台日志。然而,我已经配置了120秒的超时,但它没有反映。我知道nodejs服务器的默认超时是120秒,但是我仍然从这个模块获得了这个调用的超时(60秒)。请提供您对此的见解

var options = {
  method: 'post',
  url:url,
  timeout: 120000,
  json: true,
  headers: {
    "Content-Type": "application/json",
    "X-Authorization": "abc",
    "Accept-Encoding":"gzip"
  }
}
var startTime = new Date();
request(options, function(e, r, body) {
  var endTime = new Date();
  var latencyTime = endTime - startTime;
  console.log("Ended. latencyTime:"+latencyTime/1000);
  res.status(200).send(body);

});
从,向下滚动到
超时
条目:

超时-包含在中止请求之前等待服务器发送响应头(并启动响应正文)的毫秒数的整数。请注意,如果无法建立底层TCP连接,操作系统范围的TCP连接超时将否决超时选项(Linux中的默认值可以是20-120秒)

注意最后一部分“如果无法建立底层TCP连接,操作系统范围的TCP连接超时将否决超时选项”

还有一整节是关于。基于此以及您的代码示例,我们可以修改请求示例

request(options, function(e, r, body) {
  if (e.code === 'ETIMEDOUT' && e.connect === true){
  // when there's a timeout and connect is true, we're meeting the
  // conditions described for the timeout option where the OS governs
  console.log('bummer');
  }
});

如果这是真的,您需要确定更改操作系统设置是否可行和可接受(这超出了本答案的范围,这样的问题最好是针对服务器故障)。

您好,Matthew,我收到了这个错误。{[Error:read ECONNRESET]代码:'ECONNRESET',errno:'ECONNRESET',syscall:'read'}。你知道我为什么要得到这个吗?。通过REST客户机(邮递员/etc),我能够在1秒内得到响应。但是通过这个节点模块需要一些时间。当我cat/proc/sys/net/ipv4/tcp\u syn\u重试时,我得到了6的值。首先,如果
ECONNRESET
是错误,那么超时就不是问题。您有一个不同的问题,您应该看到另一个堆栈溢出答案:这个答案仍然正确吗?当我尝试使用它或任何选项时,e或error参数从不包含code属性或connect属性。它确实包含一条消息,说timeoutI已经几个月没有使用request了,但文档与这个答案是一致的。所以我不能确定,但似乎模块仍然是这样构建的(或者已经更改,但文档没有更新?)。