2012-02-11 69 views
5

我需要来调节机械化实例如何往往与API连接(每2秒一次,因此限制连接到以上)限制/限速红宝石机械化

所以这样的:

instance.pre_connect_hooks << Proc.new { sleep 2 } 

我原以为这会工作,这有点确实,但现在在该类的每个方法休眠2秒,仿佛机械化实例感动,并告诉保持2秒。我要去尝试后连接挂钩,但很明显我需要一些更复杂的,但我不会在这一点上知道的。

代码更详细,所以如果您有兴趣关注以下内容:https://github.com/blueblank/reddit_modbot,否则我的问题涉及如何有效和有效地限制Mechanize实例在由API指定的特定时间范围内(超过该限制导致丢弃请求和禁令)。此外,我猜,我需要一个机械化实例更好地融入到我的类为好,在任何指针赞赏为好。

+0

http://www.ruby-doc.org/core-1.9.2/Kernel.html#method-i-sleep我猜睡眠是太大了,这 – blueblank 2012-02-11 19:08:49

回答

2

Pre和后连接挂钩呼吁每一个连接,所以如果有一些重定向它可能引发多次为一个请求。尝试history_added只被调用一次:

instance.history_added = Proc.new {sleep 2} 
+0

这似乎是工作锤子和到目前为止还没有弄糟一切。 – blueblank 2012-02-12 20:12:25

1

我用SlowWeb进行速率限制呼叫到一个特定的URL。

require 'slowweb' 
SlowWeb.limit('example.com', 10, 60) 

在这种情况下,对example.com域的调用每60秒限制为10个请求。