5

我需要调节 Mechanize 实例与 API 连接的频率(每 2 秒一次,因此限制连接到该 API 或更多)

所以这:

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

我原以为这会起作用,但现在该类中的每个方法都休眠了 2 秒,就好像触摸了机械化实例并被告知要保持 2 秒一样。我将尝试一个 post connect 钩子,但很明显我需要一些更详细的东西,但我现在不知道是什么。

代码是更多的解释,所以如果你有兴趣跟随:https://github.com/blueblank/reddit_modbot,否则我的问题是如何有效和有效地将 Mechanize 实例限制在 API 指定的特定时间范围内(其中超出该限制会导致请求和禁令丢失)。另外,我猜我还需要更好地将机械化实例集成到我的班级中,对此的任何指针也很感激。

4

2 回答 2

2

每次连接都会调用前连接和后连接挂钩,因此如果有一些重定向,它可能会为一个请求触发多次。尝试 history_added 只被调用一次:

instance.history_added = Proc.new {sleep 2}
于 2012-02-12T06:50:33.673 回答
1

我使用SlowWeb来限制对特定 URL 的调用。

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

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

于 2012-05-09T05:41:27.177 回答