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解决方案将是 编辑 – 而且,正如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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |