【发布时间】:2016-02-22 04:03:24
【问题描述】:
我正在尝试在不达到速率限制的情况下获取用户的所有关注者 ID (75K+)。我想您可以在光标上放置一个睡眠方法,以防止每 15 分钟调用超过 15 次。知道怎么做吗?提前致谢。 :)
【问题讨论】:
标签: ruby api twitter rate-limiting
我正在尝试在不达到速率限制的情况下获取用户的所有关注者 ID (75K+)。我想您可以在光标上放置一个睡眠方法,以防止每 15 分钟调用超过 15 次。知道怎么做吗?提前致谢。 :)
【问题讨论】:
标签: ruby api twitter rate-limiting
我猜您正在使用twitter gem 与 Twitter API 进行交互。在他们的 wiki 的 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
【讨论】:
.last?是私有的,你怎么能使用它?