【问题标题】:Why am I hitting the Twitter API rate limit?为什么我会达到 Twitter API 速率限制?
【发布时间】:2015-08-11 13:32:10
【问题描述】:

我正在使用下面的代码使用 Twitter API,并且我在循环内达到了 API 速率限制。

我的问题是:我是如何达到速率限制的?我相信当我分配 myFollowers 时我只进行一次 API 调用,并且在循环中我只是查看 myFolwers 中每个对象的位置值,这应该只是服务器端处理。

 require 'twitter'

    client = Twitter::REST::Client.new do |config|
          config.consumer_key        = "xx"
          config.consumer_secret     = "xx"
          config.access_token        = "xx"
          config.access_token_secret = "xx"
        end

        myFollowers = client.followers("mytwittername")

        myFollowers.each do |follower|
            if follower.location.include? 'New'
                print Name: follower.name
                puts Location: follower.location
            end
        end

【问题讨论】:

  • 您是否使用网络捕获工具检查它是否有一个或多个调用?像 ngrep 或 wireshark 之类的东西。
  • 这是最好的选择。虽然客户端看起来应该是对 API 的简单且单一的调用,但您永远不知道引擎盖下到底发生了什么。

标签: ruby twitter


【解决方案1】:

我相信,默认情况下,client.followers 不会为每个关注者加载整个用户实体,因此当您迭代关注者时,您会生成一个新请求,从而很快达到速率限制。

尝试将 client.followers 调用上的 :include_user_entities 设置为 true,看看会发生什么。请参阅下面的代码/文档链接。

http://www.rubydoc.info/gems/twitter/Twitter/REST/FriendsAndFollowers#followers-instance_method

如果这不起作用,请在您的 client.followers 调用后停止您的脚本,并让我们知道 myFollowers 集合的样子。

【讨论】:

  • 谢谢,杰夫。 :include_user_entities => true 运气不好。我注释掉了循环并在 myFollowers 上调用了 inspect 方法,下面是它的简短输出。 myFollowers 对象似乎包含大约 19 个关注者的信息。 Pastebin 显示了一些关于 API 调用的实例变量和 1 个关注者:pastebin.com/hZvKna6e
猜你喜欢
  • 2014-08-05
  • 1970-01-01
  • 2023-01-08
  • 1970-01-01
  • 2022-08-22
  • 1970-01-01
  • 2022-11-10
  • 2012-03-08
  • 2012-08-10
相关资源
最近更新 更多