我有一个应用程序设置为每天一次调度多个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调用,则每次重新调度查询的风险.但在那之前,一些简单的事情可能会成功!