处理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调用次数超过速率限制允许的范围,则可能会每次都重新安排一次查询。 但在此之前,一些简单的事情可能会诀窍!
另一种解决方案是购买代理,允许您发送具有不同IP地址的请求
使用标准的http库http://ruby-doc.org/stdlib-2.0/libdoc/net/http/rdoc/Net/HTTP.html#method-c-Proxy
我不确定你会不会被封锁,但可能值得尝试。 随机选择IP应该增加你的限制
除非你提出并发请求,否则没有多少要求。
sleep
休息。 有了并发请求,您可以更加准确,我曾在此处发表过博文
链接地址: http://www.djcxy.com/p/71489.html上一篇: Dealing with API rate limits?
下一篇: How to detect mouseenter direction on a specific element