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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 处理API速率限制?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序设置为每天一次调度多个API.这非常好用,但我知道我正在调用的一些API(例如Twitter)有一个速率限制.随着我正在进行的通话次数设置不断增长,有人可以推荐一种方法来限制我的通话,这样我就可以每小时/每分钟发送x的爆发等吗?

我找到了Glutton Ratelimit宝石,是否有人使用这个并且它有什么用?还有其他我应该看的吗?

解决方法

如果您正在使用某种后台工作程序来执行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相关文章