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

VSCode + PrettierでRubyのコードを自動フォーマットする

@prettier/plugin-rubyを利用

VSCodeでRails環境を整える

ショートカット大事

VSCodeでRubyのコード補完と関数ジャンプができるようにする

ruby拡張とsolargraph拡張を入れる

Action Mailerのインターセプタを使ってバウンスメールのチェックを行う

AWS SESを使っている場合はバウンス対応をやっておかないとサービス停止になってしまう

docker-composeでRails6環境をrails newしたら途中で止まってしまった

--skip-gitオプションを追加する必要があった

activerecord-importのクエリログを無効化する

一時的にログを無効化して処理が終わったあとに戻すようにした