使用Mechanize,我需要找到一些方法将请求限制为每秒1次(或者每5秒1次,或者每分钟2次,等等,这一点可以找到一些速率限制请求)。
搜索,这似乎是开始解决问题的方法:前/后连接挂钩。只有我不知道如何处理它们或如何接近,我猜测我的水平和研究我需要做一个lambda或proc,说'嘿等一下',看起来很基本。
我的问题基本上是关于如何做到这一点的一个例子或另一条线索。我尝试了几个lambdas(我对这究竟会做什么的理解程度很低):
@agent.pre_connect_hooks << lambda { |pc| sleep 1 }
但这只是将我的请求转为错误:
ArgumentError: wrong number of arguments (2 for 0)
即使开始通过机械化代码,到目前为止对我来说收效甚微。
任何输入和学习指导都表示赞赏。
答案 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)