是否有办法在这个简单的get方法中添加超时选项?
我用的是Faraday 3.3
Faraday.get(url)
经过搜索,我只能在我首先发起连接后应用超时选项,然后再应用超时选项。或者有一个简单的方法?
这就是我现在正在做的:
conn = Faraday.new
response = conn.get do |req|
req.url url
req.options.timeout = 2 # 2 seconds
end
试试这个:
conn = Faraday.new do |conn|
conn.options.timeout = 20
end
response = conn.get(url)
乌利希期刊指南:在我审查了宝石资源后,我发现没有办法像你想的那样做。
使用get
方法,您只能设置url,请求参数和头。但是要指定超时时间,您必须访问Faraday::Connection
实例的@options
。你可以使用attr_reader :options
conn = Faraday::Connection.new
conn.options.timeout = 20
或Faraday初始化时::Connection实例:
Faraday::Connection.new(nil, request: { timeout: 20 })
或者当它将连接参数复制到请求参数并返回请求时:
Faraday::Connection.new.get(url) { |request| request.options.timeout = 20 }
我遇到了同样的问题,我最终做了这样的事情,这样我可以更容易地在测试中存根代码:
def self.get(url, params: {}, headers: {}, timeout: 2)
conn = Faraday.new(
params: params,
headers: headers
) do |conn|
conn.options.timeout = timeout
end
conn.get(url)
end