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)
谢谢!
答案 0 :(得分: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秒击中它一次以上。
您还可以跟踪一段时间内的通话,抢救异常并在达到速率限制时重试请求。