前提・実現したいこと
seleniumでサイト調査をしておりまして、対象ページが5000ページくらいあり、
2~3秒に1度アクセスして情報取得を繰り返すようにしています。
途中でタイムアウトして止まってしまいます。
テスト用に少量ページで実行すると起こらないので再現度が低いです。
しかしながら途中で止まってしまうと困るので、安定した稼働をさせるために、
タイムアウトをしたら時間をおいて再度実行するような手順を書いた方がよいのではないか?
と思っています。
発生している問題
ページ数がたくさんなので、プログラム実行したまま放置してました。
今朝確認すると下記のようなエラーがでました。
console
1C:/Ruby26-x64/lib/ruby/2.6.0/net/protocol.rb:217:in et:(closed)> (Net::ReadTimeout)
調査対象ページを20ページにしぼってプログラムを実行して何度かテストしていますが、
特に途中で止まるようなことがなかったので、長時間やることによって上記のようなエラーがでたのではないか?とおもいます。
該当のソースコード
ruby
1 2csv_import_url.each do |url| 3 driver.navigate.to(url) # この行でエラー(Net::ReadTimeout)が出て停止する 4 ~ ここに処理 ~ 5end 6
試したこと
5000ページの回遊をすると、4時間くらいかかってしまうので、
コードがちゃんと実装されているかを確認する際には20件にしぼり、アプリケーションを実行しています。
件数をしぼって実行した時はとくにタイムアウトのエラーはでなかったので、
毎回再現できないので、どう検証するのがいいか悩んでます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/28 02:54
2020/01/28 09:03
2020/01/30 00:51