如何使用 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