当我使用Twitter搜索宝石剩余速率限制减少两次

时间:2016-06-08 11:28:44

标签: ruby-on-rails twitter twitter-gem

已编辑:reasonable answer at comments

我正在寻找一种在进行咨询之前检查Twitter API速率限制的方法,但是每当我调用search时,下一个片段,remaining减少两次而不是一次。

user = User.find_by_id(ID)
client = Twitter::REST::Client.new do |config|
  config.consumer_key = CONSUMER_KEY
  config.consumer_secret = CONSUMER_SECRECT
  config.access_token = user.access_token
  config.access_token_secret = user.access_token_secret
end

client.search("baeza")
puts Twitter::REST::Request.new(client, :get, 'https://api.twitter.com/1.1/application/rate_limit_status.json', resources: "search").perform
client.search("baeza")
puts Twitter::REST::Request.new(client, :get, 'https://api.twitter.com/1.1/application/rate_limit_status.json', resources: "search").perform

我得到了下一个结果:

{:rate_limit_context=>{:access_token=>"access_token"}, :resources=>{:search=>{:"/search/tweets"=>{:limit=>180, :remaining=>178, :reset=>1465385167}}}}
{:rate_limit_context=>{:access_token=>"access_token"}, :resources=>{:search=>{:"/search/tweets"=>{:limit=>180, :remaining=>176, :reset=>1465385167}}}}

我很感激听到你的想法。谢谢你的阅读!

1 个答案:

答案 0 :(得分:0)

可以这么简单,因为对rate_limit_status.json的调用也很重要吗?怎么办

client.search("baeza")
client.search("baeza")
client.search("baeza")
puts Twitter::REST::Request.new(client, :get, 'https://api.twitter.com/1.1/application/rate_limit_status.json', resources: "search").perform

它会回归176吗?

更新 - 调用rate_limit_status应影响限制,但无论如何都会看到建议调用的结果。

更新2

Gem默认只提取第一页,无论结果计数如何。获取下一页是在您的控制之下。请参阅here - fetch_next_page是私有方法,由"每个"枚举器的方法here - 所以如果你开始迭代搜索结果并传递所有第一页结果。当您刚刚发出请求(称为搜索)时 - 它只会获取第一页(一个查询)。

此外,如果未默认指定,则将API搜索请求的gem设置参数设置为100(允许的最大值) - here表示常量,here表示设置