机械化前/后连接挂钩

时间:2012-02-09 20:43:56

标签: ruby mechanize mechanize-ruby

使用Mechanize,我需要找到一些方法将请求限制为每秒1次(或者每5秒1次,或者每分钟2次,等等,这一点可以找到一些速率限制请求)。

搜索,这似乎是开始解决问题的方法:前/后连接挂钩。只有我不知道如何处理它们或如何接近,我猜测我的水平和研究我需要做一个lambda或proc,说'嘿等一下',看起来很基本。

我的问题基本上是关于如何做到这一点的一个例子或另一条线索。我尝试了几个lambdas(我对这究竟会做什么的理解程度很低):

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

但这只是将我的请求转为错误:

ArgumentError: wrong number of arguments (2 for 0)

即使开始通过机械化代码,到目前为止对我来说收效甚微。

任何输入和学习指导都表示赞赏。

3 个答案:

答案 0 :(得分:4)

你的lambda需要2个参数:

agent.pre_connect_hooks << lambda do |agent, request|
  sleep 1
end

答案 1 :(得分:1)

改为使用Proc

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

答案 2 :(得分:1)

您也可以传递Method

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

agent.pre_connect_hooks << method(:my_pre_hook)