一个简单get的法拉第超时



是否有办法在这个简单的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

最新更新