【问题标题】:Is it possible to set infinite timeout in node.js request?是否可以在 node.js 请求中设置无限超时?
【发布时间】:2017-07-12 03:19:10
【问题描述】:

我正在使用“请求”node.js 模块 (https://github.com/request/request) 向另一个服务发送请求。 有时需要发送请求并无限等待响应,因为发送请求的服务很慢。

可以为请求设置“超时”属性,这样您将覆盖读取和连接超时的默认值:

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

但是我们可以设置什么值来使这个超时无限?

【问题讨论】:

  • 我猜十亿就足够了。我真的不认为你愿意等待超过 10 天。
  • 您可以控制您的服务器超时。但是客户端可能有自己的超时时间(例如浏览器),您无法控制。
  • 当然,那是设置十亿的选项。但幻数总是被视为变通方法。如果有官方文档说设置 timeout 为 0 等于无穷大就好了,但是没有说。
  • 无超时一般不是一个好的设计。任何从不发送响应的编程错误都会导致一方或双方泄漏 TCP 套接字。超时有充分的理由。您可能需要一种不同的设计来返回一个长时间运行的结果,或者是一个可以稍后发回结果的 requestID(通过 webSocket 或通过未来的 http 请求请求结果)。
  • 完全同意你的看法。我已经考虑过了。但万一没有人想重写逻辑来使用requestID,我希望应该可以有一些“超时逻辑”。

标签: node.js http express request timeout


【解决方案1】:

所有客户端都有自己的超时(chrome,Firefox,...),那么您必须认为设置无限超时没有用,您必须重新考虑您的问题,这不是好方法

【讨论】:

  • 在我的例子中,请求从一个 node.js 服务到另一个 node.js 服务。我可以控制/编辑两种服务的超时时间。
  • 好的,然后检查这个答案stackoverflow.com/questions/21708208/…
【解决方案2】:

server.timeout 属性从120,000(默认)设置为0

【讨论】:

  • 恐怕这样我们把这台服务器的所有请求都设置为0吧?
  • @IrinaPetrushenko,您是为特定脚本添加还是添加?
  • 我的意思是,如果您有一些带有 API 的服务器,并且您不想为所有请求设置一个无限限制,那么它将无法工作。
猜你喜欢
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 2019-10-18
  • 2020-03-10
  • 2012-02-21
  • 1970-01-01
相关资源
最近更新 更多