0

已编辑:评论中的合理答案

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

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}}}}

我很高兴听到你的想法。谢谢阅读!

4

1 回答 1

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 默认只获取第一页,不管结果数。获取下一页在您的控制之下。请参阅此处- fetch_next_page 是私有方法,由此处的枚举器的“每个”方法调用-因此,如果您开始遍历搜索结果并传递所有首页结果。当您刚刚发出请求(称为搜索)时 - 它只获取第一页(一个查询)。

此外,如果默认情况下未指定,gem 将 API 搜索请求的计数参数设置为 100(允许的最大值) -这里是常量,这里是设置它

于 2016-06-08T12:17:13.630 回答