1. ホーム
  2. ruby-on-rails

[解決済み] 単純な取得のファラデーのタイムアウト

2022-02-19 18:35:20

質問内容

このシンプルなgetメソッドにタイムアウトオプションを追加する方法はありますか?

ファラデー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)

UPDです。 gemのソースを見直したところ、お望みのような方法はないことがわかりました。

get メソッドで設定できるのは url、リクエストパラメータ、ヘッダ . しかし、タイムアウトを指定するためには @optionsFaraday::Connection のインスタンスを作成します。そして、これを実現するために 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 }