加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – Twitter api速率限制的解决方法

发布时间:2020-12-17 03:54:30 所属栏目:百科 来源:网络整理
导读:我收集了一大堆用户并将它们放在变量’users’中.我正在遍历它们并尝试使用我的新Twitter帐户关注它们.然而,在大约15岁之后,我因为超出限制而被Twitter拦截.我想再次运行它,但没有我已经关注的用户.如何跟踪“用户”数组中的“i”,或以某种方式从我尚未关注
我收集了一大堆用户并将它们放在变量’users’中.我正在遍历它们并尝试使用我的新Twitter帐户关注它们.然而,在大约15岁之后,我因为超出限制而被Twitter拦截.我想再次运行它,但没有我已经关注的用户.如何跟踪“用户”数组中的“i”,或以某种方式从我尚未关注的用户那里返回一个新数组?我知道像pop和unshift等方法,但我不确定’i’来自’users’数组.我是一个永久的新手,所以请尽可能多地包含细节

不是,用户实际上是一个’游标’而不是一个数组,因此,它没有长度方法

>> users.each do |i|
?> myuseraccount.twitter.follow(i)
>> end

Twitter ::错误:: TooManyRequests:超出了速率限制

解决方法

一个简单的黑客可以使用对 sleep(n)的调用:

>> users.each do |i|
?>   myuseraccount.twitter.follow(i)
?>   sleep(3)
>> end

增加睡眠次数,直到twitter-api停止抛出错误.

通过限速实现了对该问题的适当解决方案.

用于方法调用率限制的可能的ruby解决方案将是glutton_ratelimit.

编辑 – 而且,正如Kyle所指出的那样,有a documented solution to this problem.

以下是该解决方案的增强版本:

def rate_limited_follow (account,user)
  num_attempts = 0
  begin
    num_attempts += 1
    account.twitter.follow(user)
  rescue Twitter::Error::TooManyRequests => error
    if num_attempts % 3 == 0
      sleep(15*60) # minutes * 60 seconds
      retry
    else
      retry
    end
  end
end

>> users.each do |i|
?>   rate_limited_follow(myuseraccount,i)
>> end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读