法拉第中的“超时”和“打开超时”是啥?

Posted

技术标签:

【中文标题】法拉第中的“超时”和“打开超时”是啥?【英文标题】:What is "timeout" and "open timeout" in Faraday?法拉第中的“超时”和“打开超时”是什么? 【发布时间】:2012-05-06 12:40:51 【问题描述】:

由于法拉第没有文档,我无法在任何地方找到它。法拉第中的“超时”和“打开超时”是什么?

【问题讨论】:

【参考方案1】:

如果您查看https://github.com/lostisland/faraday/blob/master/lib/faraday/request.rb 的源代码,您会看到:

#   :timeout      - open/read timeout Integer in seconds
#   :open_timeout - read timeout Integer in seconds

也许不是很有帮助?好吧,如果您查看 https://github.com/lostisland/faraday/blob/master/lib/faraday/adapter/net_http.rb 的法拉第 Net::HTTP 适配器,您会看到:

http.read_timeout = http.open_timeout = req[:timeout] if req[:timeout]
http.open_timeout = req[:open_timeout]                if req[:open_timeout]

所以 Faraday 的 open_timeout 等价于 Net::HTTP 的 open_timeout 记录为:

等待连接打开的秒数。可以使用任何数字,包括小数秒的浮点数。如果 HTTP 对象无法在这么多秒内打开连接,则会引发 TimeoutError 异常。

法拉第的 timeout 相当于 Net::HTTP 的 read_timeout 记录为:

等待读取一个块的秒数(通过一次 read(2) 调用)。可以使用任何数字,包括小数秒的浮点数。如果 HTTP 对象在这么多秒内无法读取数据,则会引发 TimeoutError 异常。

【讨论】:

很棒的答案,谢谢:)。是的,我也看到了法拉第的描述,是的,它不是很有帮助。但这真的很棒:) 仍然是一个很好的答案!

以上是关于法拉第中的“超时”和“打开超时”是啥?的主要内容,如果未能解决你的问题,请参考以下文章

toastr.options 中的“超时”是啥意思

Testcontainers:使用 GitLab CI “等待容器端口打开超时”

Mio 在零持续时间超时的轮询中的行为是啥?

tomcat下部署多个项目,配置文件中的ribbon超时不生效是啥原因?

Android 上 DefaultHttpClient 中连接和套接字超时的默认值是啥?

spring boot 2.2中默认的rest api超时是啥