如何使用 sleep for cursor 方法来避免速率限制?
How can I use sleep for cursor method to avoid rate limiting?
我正在尝试在不达到速率限制的情况下获取用户的所有关注者 ID (75K+)。我认为您可以在光标上放置一个睡眠方法,以防止每 15 分钟调用超过 15 次。知道怎么做吗?提前致谢。 :)
我猜您正在使用他们的维基 twitter
gem for interacting with the Twitter API. There is exactly your scenario described in one:
follower_ids = client.follower_ids('justinbieber')
begin
follower_ids.to_a
rescue Twitter::Error::TooManyRequests => error
# NOTE: Your process could go to sleep for up to 15 minutes but if you
# retry any sooner, it will almost certainly fail with the same exception.
sleep error.rate_limit.reset_in + 1
retry
end
我们的想法是简单地 sleep
如果达到速率限制需要一段时间,然后 retry
API 调用。
如果您想完全避免速率限制,您可以每 x
秒从返回的游标中取出 limit - 1
个元素。在你的情况下,服用 15 种元素,然后睡 15 分钟。这是一个例子:
follower_ids = client.follower_ids('justinbieber')
loop do
follower_ids.take(15)
break if follower_ids.last?
sleep 15 * 60 # 15 minutes
end
我正在尝试在不达到速率限制的情况下获取用户的所有关注者 ID (75K+)。我认为您可以在光标上放置一个睡眠方法,以防止每 15 分钟调用超过 15 次。知道怎么做吗?提前致谢。 :)
我猜您正在使用他们的维基 twitter
gem for interacting with the Twitter API. There is exactly your scenario described in one:
follower_ids = client.follower_ids('justinbieber')
begin
follower_ids.to_a
rescue Twitter::Error::TooManyRequests => error
# NOTE: Your process could go to sleep for up to 15 minutes but if you
# retry any sooner, it will almost certainly fail with the same exception.
sleep error.rate_limit.reset_in + 1
retry
end
我们的想法是简单地 sleep
如果达到速率限制需要一段时间,然后 retry
API 调用。
如果您想完全避免速率限制,您可以每 x
秒从返回的游标中取出 limit - 1
个元素。在你的情况下,服用 15 种元素,然后睡 15 分钟。这是一个例子:
follower_ids = client.follower_ids('justinbieber')
loop do
follower_ids.take(15)
break if follower_ids.last?
sleep 15 * 60 # 15 minutes
end