2017-03-07 7 views
0

私はいくつかのデータを収穫するtwitterツールを書いています。以下のコードどの例外が呼び出されたかを知る方法

 replies_without_root_tweet.each do |r| 
     begin 
      t = client.status(r.in_reply_to_status_id) 
      RootTweet.find_or_create(t) 
     rescue Twitter::Error::NotFound,Twitter::Error::Forbidden => e 
      puts e 
     end 

のスニペットは今のものがあるが、Twitterの検索APIは、私はたくさんのヒット率の制限があります。ここでの問題は、私はこの例外

ツイッター::エラー:: TooManyRequests

あなたは、私があまりにも多くを追加する場合、私は、他の2つの例外から救出見ることができるように打つ場合、私は15分でプロセスを再開することができる方法です例外も同様に要求しますが、指定された時間が経過しない限り、いつも例外を常に襲うので問題になります。

特定の例外が発生したときを知る方法はありますか?私はそのプロセスをスリープ状態にできますか?あなたが望むようあなたが異なっ他よりもTooManyRequestsを処理するためにこれを行うことができますので、あなたは、できるだけ多くrescueステートメントを持つことができます

答えて

2

begin 
    t = client.status(r.in_reply_to_status_id) 
    RootTweet.find_or_create(t) 
rescue Twitter::Error::NotFound, Twitter::Error::Forbidden => e 
    puts e 
rescue Twitter::Error::TooManyRequests => e 
    puts e 
    sleep 10 
end 

をまた、例えば、それが何であるか、エラーオブジェクトを求めることができますe.is_a?(Twitter::Error::TooManyRequests)

+0

これはうまくいくでしょう! –

関連する問題