【问题标题】:What is the default timeout for NPM request module (REST client)?NPM 请求模块(REST 客户端)的默认超时是多少?
【发布时间】:2017-02-05 06:44:25
【问题描述】:

接下来是我的 node.js 调用以检索一些数据,这需要超过 1 分钟。这将在 1 分钟(60 秒)时超时。我也为延迟放置了一个控制台日志。但是我已将超时配置为 120 秒,但它没有反映。我知道默认级别的 nodejs 服务器超时是 120 秒,但我仍然从这个 request 模块中获得了这个调用的超时(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);

});

【问题讨论】:

    标签: node.js rest npm timeout


    【解决方案1】:

    request options docs,向下滚动到timeout 条目:

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

    注意最后一部分“如果无法建立底层 TCP 连接,则 OS 范围的 TCP 连接超时将推翻超时选项”。

    Timeouts 上还有一个完整的部分。基于此,以及您的代码示例,我们可以这样修改请求示例

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

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

    【讨论】:

    • 嗨,马修,我收到了这个错误。 { [错误:读取 ECONNRESET] 代码:'ECONNRESET',errno:'ECONNRESET',系统调用:'read'}。有什么想法为什么我会得到这个?通过 REST 客户端(POSTMAN/ 等),我能够在 1 秒内得到响应。但是通过这个节点模块需要一些时间。当我 cat /proc/sys/net/ipv4/tcp_syn_retries 时,我得到了 6 的值。
    • 首先,如果ECONNRESET 是错误,那么超时不是问题。你有一个不同的问题,你应该看到另一个 Stack Overflow 答案:stackoverflow.com/a/17637900/2247344
    • 这个答案仍然正确吗?当我尝试使用它或任何选项时,e 或 error 参数从不包含 code 属性或 connect 属性。它确实包含一条消息说超时
    • 我已经有几个月没用过request了,但是文档和这个答案是一致的。所以我不能肯定地说,但似乎模块仍然是这样构建的(或者已经改变但文档没有更新?)。
    猜你喜欢
    • 1970-01-01
    • 2013-02-17
    • 2016-09-29
    • 2019-07-18
    • 2011-01-14
    • 2010-09-15
    • 2012-04-01
    • 2017-11-18
    • 2022-11-25
    相关资源
    最近更新 更多