エントリーの編集

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
open-uriにtimeoutを設定する方法 - Pistolfly
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
open-uriにtimeoutを設定する方法 - Pistolfly
require 'open-uri' require 'resolv-replace' require 'timeout' TIMEOUT = 3 begin timeout(TIMEOUT) ... require 'open-uri' require 'resolv-replace' require 'timeout' TIMEOUT = 3 begin timeout(TIMEOUT) do open(url) do |f| # 処理 end end rescue TimeoutError => e # タイムアウト時の例外処理 rescue => e # その他の例外処理 end timeout による割り込みはRubyのThreadによって実現されており、C言語レベルで実装されRuby のスレッドが割り込めない処理では無効なので、SocketでDNSの名前解決に時間がかかった場合にタイムアウトしない。そのため、resolvライブラリを使うようにresolv-replaceでメソッドの書き換えを行う。 タイムアウト時のTimeoutErrorはStandardErrorのサブクラ