我正在使用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
答案 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