如何知道调用了哪个异常

时间:2017-03-07 17:57:19

标签: ruby-on-rails 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的速率限制让我大打折扣。这里的问题是,如果我遇到此异常,我怎样才能在15分钟内恢复该过程

微博::错误:: TooManyRequests

正如你可以看到我救出另外两个例外,如果我也添加了太多的请求异常,那将是一个问题,因为除非经过指定的时间,否则我可能会一直遇到该异常。

有没有办法知道特定异常何时启动,以便我可以暂停这个过程?

1 个答案:

答案 0 :(得分:2)

您可以拥有任意数量的rescue语句,因此您可以这样做来处理TooManyRequests与其他语句不同:

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)