ruby - 通过 RestClient 处理 API 调用时出错
问题描述
我正在使用rspotify从专辑名称中收集数据列表。一直以来,我都达到了 Spotify 的 api 速率限制,现在想创建一些后备方案,等到我可以搜索并重试搜索,以免丢失我已经检索到的 (x) 数据量。
gem 使用 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
解决方案
我在考虑可能会限制,所以在例外情况下,将 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
推荐阅读
- apache-nifi - nifi putFile 进程未写入目录
- django - 没有调用 Django 上下文处理器
- java - 在 java web 项目中显示图像
- c# - .Net Core Web Api - 无法正确授权,得到 401
- swift - Xcode 给我写的所有东西都报错
- feathersjs - 处理现在存档的模块,即配置、快递、socketio、错误
- c# - 假设基本接口继承的泛型类型列表的Contra/Co Variance
- javascript - jQuery 搜索只搜索其所在的页面
- jquery - 如何去除MVC视图页面中的Required标签?
- android - 调用需要 api 级别 19 当前最小值为 16 java.util.objects#requirenonnull