Механизировать до / после подключения крючков - PullRequest
3 голосов
/ 10 февраля 2012

Используя Mechanize, мне нужно найти способ ограничить количество запросов до 1 в секунду (или 1 раз в 5 секунд, или 2 каждую минуту, и т. Д. Суть в том, чтобы найти какой-то способ оценить лимит запросов).Поиски, это, кажется, способ начать подход к проблеме: хуки до / после соединения.Только я точно не знаю, что с ними делать или как подойти, я догадываюсь по своему уровню и исследованиям, что мне нужно сделать лямбду или процесс, который говорит: «Эй, подожди секунду», кажется достаточно базовым.

Мой вопрос в основном для примера или другой подсказки о том, как это сделать.Я пробовал несколько лямбд (и я не очень хорошо понимаю, что именно это будет делать):

@agent.pre_connect_hooks << lambda { |pc| sleep 1 }

, но это просто превращает мои запросы в ошибки:

ArgumentError: wrong number of arguments (2 for 0)

Даже то, что я начинаю проходить через механизированный код, пока мало что дает для меня.

Любые советы по вводу и обучению приветствуются.

Ответы [ 3 ]

4 голосов
/ 14 мая 2012

Вашей лямбде нужно 2 аргумента:

agent.pre_connect_hooks << lambda do |agent, request|
  sleep 1
end
1 голос
/ 30 мая 2012

Вы также можете передать Method:

def my_pre_hook(agent, request)
  # Do fun stuff.
end

agent.pre_connect_hooks << method(:my_pre_hook)
1 голос
/ 10 февраля 2012

Используйте Proc вместо:

@agent.pre_connect_hooks << Proc.new { sleep 1 }

...