ruby-on-rails - 处理 API 速率限制?

标签 ruby-on-rails ruby ruby-on-rails-3

我有一个应用程序设置为每天一次对多个 API 进行预定调用。这工作得很好,但我知道我正在调用的一些 API(例如 Twitter)有速率限制。随着我调用的电话数量不断增加,有人可以推荐一种方法来限制我的电话,这样我就可以每小时/分钟发送 x 次吗?

我找到了 Glutton Ratelimit gem,有人在用这个吗?它有什么好处吗?还有其他我应该看的吗?

最佳答案

如果您使用某种后台 worker 来执行您的 API 调用,您可以重新安排任务在下一个时间段重新执行,此时速率限制已被重置。

class TwitterWorker
  include Sidekiq::Worker

  def perform(status_id)
    status = Twitter.status(status_id)
    # ...

  rescue Twitter::Error::TooManyRequests
    # Reschedule the query to be performed in the next time slot
    TwitterWorker.perform_in(15.minutes, status_id)
  end
end

虽然没有科学的解决方案,例如如果您尝试在一天内执行比速率限制允许的更多的 API 调用,则每次都可能重新安排查询的风险。但在那之前,一些简单的事情可能会成功!

关于ruby-on-rails - 处理 API 速率限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16645482/

相关文章:

ruby-on-rails - 类似 Rails 的数据库迁移?

ruby - 在 Vagrant 配置 Bash 脚本中运行 Ruby 文件

ruby-on-rails - 机架测试需要机架应用程序,但没有给出

ruby-on-rails-3 - Rails 3.0.8 "redirect_to"- 控制台显示 View 已呈现但浏览器保持静态

ruby-on-rails - Rails 模型关系 : Has one but also belongs to many

ruby-on-rails - 使用在对象数组上调用的类方法在 Rails 中导出 CSV

ruby-on-rails - 在 JSON 响应中返回 CSRF token

ruby - 是否可以临时更改链式方法调用的实例变量?

ruby-on-rails-3 - rails 3.1,capybara-webkit,如何在链接内执行 javascript?

ruby-on-rails - 为什么 Model.all 不同于 Model.where ('true' ) 在 rails 3