open-uriでhttpリクエストを送信する際のtimeout設定

公開日時

以下のようにしてoprn-uriを使って時間のかかるAPIにアクセスした際に[[Net::ReadTimeout]]エラーになってしまう現象が発生した。

require 'open-uri'

res = open(paapi_sale_list_url)

そこで以下のようにしてモンキーパッチを当ててtimeout時間を15分に変更。

require 'open-uri'

class Net::HTTP
  def initialize_new(address, port = nil)
    initialize_old(address, port)
    @read_timeout = 900 # timeoutを15分に変更
  end
  alias :initialize_old :initialize
  alias :initialize :initialize_new
end

res = open(paapi_sale_list_url)

これでtimeoutはしなくなった。

参考


Related #ruby

Sidekiqで指定時間待ってから実行する

perform_inを使う

Active Jobで指定時間後にジョブを実行する

setメソッドの引数にwaitを指定する

bot tweetするrubyスクリプト

8時間ほどで申請が通っていた

RailsのログをLogrageに変更する

ログを1行にまとめてくれるので便利

request specでリダイレクトのテストをする

redirect_toが使えた

Extension fieldsを使ってdocker-composeのコンテナ設定を共通化する

Railsコンテナ設定を共通化して、commandだけそれぞれで変えるようにした