Rao*_*oot 8 ruby ruby-on-rails ruby-on-rails-3
我有一个应用程序设置为每天一次调度多个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
Run Code Online (Sandbox Code Playgroud)
但没有科学的解决方案,例如,如果您尝试在一天内执行比速率限制允许的更多的 API 调用,则存在每次重新安排查询的风险。但在那之前,一些简单的事情可能会奏效!
归档时间: |
|
查看次数: |
2860 次 |
最近记录: |