【问题标题】:Event loop for Twitter4rTwitter4r 的事件循环
【发布时间】:2019-11-11 05:18:59
【问题描述】:

Twitter4R 是否有一个事件循环,当用户提到机器人的句柄时,它会通知机器人?

我试图让它每 5 秒检查一次 client.mentions_timeline 以查看是否有新的推文提到了机器人的句柄。它起作用了,但是,在多次检查client.mentions_timeline 后,通常会超过速率限制。有没有办法可以优化这个或者我错过了什么?

         6: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/users.rb:237:in `user'
         5: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/users.rb:53:in `verify_credentials'
         4: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/utils.rb:57:in `perform_get_with_object'
         3: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/utils.rb:72:in `perform_request_with_object'
         2: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/utils.rb:50:in `perform_request'
         1: from C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/request.rb:39:in `perform'
C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/twitter-6.2.0/lib/twitter/rest/request.rb:81:in `fail_or_return_response_body': Rate limit exceeded (Twitter::Error::TooManyRequests)

谢谢!

【问题讨论】:

    标签: ruby twitter twitter-gem


    【解决方案1】:

    gem 只是 API 的包装器,因此请参阅 Twitter 上的 Rate Limits,我们可以在其中找到:

    GET 端点 此表中描述的标准 API 速率限制 请参阅 GET(读取)端点。请注意,未在 图表默认为每个分配的用户 15 个请求。所有请求窗口 长度为 15 分钟。这些速率限制适用于标准 API 仅限端点,不适用于高级 API。

    GET statuses/mentions_timeline  statuses    75  0
    

    所以看起来你每 15 分钟只能到达该端点 75 次,简单的数学运算是

    15 * 60 / 75 = 12
    

    因此,为了安全起见,您可能不应该每 12-15 秒击打一次以上。

    您还可以随着时间的推移跟踪您的呼叫、挽救异常并在您达到速率限制时重试请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-01
      • 2021-10-26
      • 2012-05-27
      • 2012-05-27
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      相关资源
      最近更新 更多