2012-02-09 50 views
3

使用机械化,我需要找到一些方法来限制请求每秒1(或每5秒1,或每分钟2等,点是找到某种方式来评级限制请求)。机械化前/后连接挂钩

搜索,这似乎是开始处理问题的方式:前/后连接挂钩。只有我不完全知道如何处理它们或如何处理,我从我的水平和研究中猜测,我需要做一个lambda或proc,说'嘿,等一下',似乎足够基本。

我的问题基本上是一个例子或另一个线索如何做到这一点。我试了几个lambda表达式(我在理解究竟是什么,这将做一个低电平):

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

但这只是令我请求错误:

ArgumentError: wrong number of arguments (2 for 0) 

甚至已经开始走到目前为止,通过机械化代码对我来说收益甚微。

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

回答

1

使用Proc代替:

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

+0

呀这样的作品,不知道为什么我被困在做一个lambda,但这是一个简单的开始。 – blueblank 2012-02-09 21:16:47

4

你拉姆达需要2个参数:

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

您也可以通过一个Method

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

agent.pre_connect_hooks << method(:my_pre_hook)