如何在Ruby的RestClient gem中设置超时时间?

42

我正在使用RestClient gem通过它向服务器发出get请求。问题是如何从客户端设置超时时间。

RestClient.get "http://127.0.0.1:7819/tokenize/word/stackoverflow"

我想将它设置为10秒。

先行致谢!!

1个回答

67

你不需要进行任何猴子补丁。你可以直接使用 RestClient::Request,例如:

RestClient::Request.execute(:method => :get, :url => url, :timeout => 10, :open_timeout => 10)

但请记住,最坏的情况是20秒。

查看其他帖子的答案https://dev59.com/O2855IYBdhLWcg3wSSKl#5445421


2
这应该是答案 - 我很抱歉必须断言猴子补丁是邪恶的,因为它们具有意想不到的副作用。 - Asfand Qazi
3
注意:如果超时时间和打开连接的超时时间相同,你不需要同时指定timeout和open_timeout。timeout的值将同时用于read_timeout和open_timeout。 (原文已经很简洁了,翻译也尽量保持简洁明了) - Kazuki
当使用 RestClient::Resource 时,可以尝试 RestClient::Resource.new('http://slow', :timeout => 10) - Jing Li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接