2015-11-19 4 views
0

Я пытаюсь получить все идентификаторы пользователя (75K +), не нажимая ограничение скорости. Я решил, что вы можете поместить метод сна на курсор, чтобы предотвратить более 15 вызовов за 15 минут. Любая идея, как это сделать? Заранее спасибо. :)Как использовать метод сон для курсора, чтобы избежать ограничения скорости?

ответ

0

Я думаю, вы используете жемчужину twitter для взаимодействия с API Twitter. Существует именно ваш сценарий описан в 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 АНИ вызов.

Если вы хотите избежать ограничения скорости, вы можете взять limit - 1 элементов из возвращаемого курсора каждые x секунд. В вашем случае возьмите 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 
+0

не повлияет ли это на ограничение скорости? Я стараюсь избегать ограничения скорости. – marriedjane875

+0

Я обновил свой ответ. – linkyndy

+0

ah ok, cool, thanks :) – marriedjane875

Смежные вопросы