法拉第超时就简单了

Zha*_*eng 5 ruby ruby-on-rails faraday

有没有办法在这个简单的get方法中添加超时选项?

我正在使用法拉第3.3.

Faraday.get(url)
Run Code Online (Sandbox Code Playgroud)

搜索后,我只能在首先启动连接后应用超时选项,然后应用超时选项.还是有一个简单的方法?

这就是我现在正在做的事情:

conn = Faraday.new
response = conn.get do |req|
  req.url url
  req.options.timeout = 2 # 2 seconds
end
Run Code Online (Sandbox Code Playgroud)

Ale*_*mes 8

试试这个:

conn = Faraday.new do |conn|
  conn.request.options.timeout = 20
end
response = conn.get(url)
Run Code Online (Sandbox Code Playgroud)

UPD:在我查看了宝石资源后,我发现没有办法像你想要的那样.

使用get方法,您只能设置网址,请求参数和标头.但要指定超时,你要访问@options的Faraday::Connection实例.你可以通过使用来做到这一点attr_reader :options

conn = Faraday::Connection.new
conn.options.timeout = 20
Run Code Online (Sandbox Code Playgroud)

或者在Faraday :: Connection实例的初始化时:

Faraday::Connection.new(nil, request: { timeout: 20 })
Run Code Online (Sandbox Code Playgroud)

或者当它将连接参数复制到请求参数并产生请求时:

Faraday::Connection.new.get(url) { |request| request.options.timeout = 20 }
Run Code Online (Sandbox Code Playgroud)