通过RestClient处理API调用时出错

时间:2018-05-25 15:15:36

标签: ruby http spotify rest-client rescue

我正在使用rspotify从相册名称中收集数据列表。我一直达到Spotify的api速率限制,现在想创建一些后备,等到我可以搜索并重试搜索,以便不丢失我已经检索过的(x)数据量。 / p>

宝石使用RestClient但不幸的是,当我达到速率限制时,我没有得到等待我再打电话所需的时间:

.rvm/gems/ruby-2.5.1/gems/rest-client 2.0.2/lib/restclient/abstract_response.rb:223:in 'exception_with_response': 429 Too Many Requests (RestClient::TooManyRequests)

以上就是我所有的。下面的begin/rescue语句不起作用,因为代码失败时,它完全失败而没有重试。我在这里做错了什么?

begin
  search = RSpotify::Album.search(album[:title])
rescue RestClient::ExceptionWithResponse, RestClient::TooManyRequests, Exception => e
  puts e
  retry
rescue e
  puts e
  retry
end

以下是他们建议错误处理的方法:

https://github.com/rest-client/rest-client#response-callbacks-error-handling

1 个答案:

答案 0 :(得分:1)

我当时正在考虑节流,所以在内部使用例外 RSpotify :: authenticate(“ id”,“ token”)与我拥有的多个Spotify帐户中的一些 然后重试

这样的东西全部放在一起

begin
   album = RSpotify::Album.find(track.first.album.id)
rescue RestClient::ExceptionWithResponse, RestClient::TooManyRequests, Exception => e            
   RSpotify::authenticate("id2", "token2")
   retry
end