gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:23:59 25 4
gpt4 key购买 nike

我收集了一堆用户并将他们放在变量“用户”中。我正在浏览它们并尝试使用我的新 Twitter 帐户关注它们。然而,大约 15 点之后,我因超出速率限制而被 Twitter 阻止。我想再次运行它,但没有我已经关注的用户。如何在关注用户后从“用户”数组中删除“我”,或者以某种方式返回一个包含我尚未关注的用户的新数组?我知道 pop 和 unshift 等方法,但我不确定 'i' 来自 'users' 数组中的何处。我是一个永远的新手,所以请包括尽可能多的细节

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

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

Twitter::Error::TooManyRequests:超出速率限制

最佳答案

一个简单的 hack 可以利用对 sleep(n) 的调用:

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

增加 sleep 计数直到 twitter-api 停止抛出错误。

这个问题的正确解决方案是通过rate-limiting实现的。

一个可能的方法调用速率限制的 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

关于ruby - Twitter api 速率限制的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12878888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com