我正在编写一个收集一些数据的推特工具。以下是代码片段
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
正如你可以看到我救出另外两个例外,如果我也添加了太多的请求异常,那将是一个问题,因为除非经过指定的时间,否则我可能会一直遇到该异常。
有没有办法知道特定异常何时启动,以便我可以暂停这个过程?
答案 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)
。