【发布时间】: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