调节/限速红宝石机械化

时间:2012-02-11 16:00:12

标签: ruby mechanize mechanize-ruby

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

所以这个:

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

我原以为这会起作用,而且它有点可行但是现在该类中的每个方法都会睡2秒钟,好像机械化实例被触摸并被告知保持2秒。我将尝试使用post connect hook,但显然我需要更复杂的东西,但是我不知道在这一点上是什么。

代码是更多解释,所以如果您对以下内容感兴趣:https://github.com/blueblank/reddit_modbot,否则我的问题涉及如何有效地将Mechanize实例的速率限制在API指定的特定时间范围内(超出该限制)导致请求和禁令被删除)。另外,我猜我需要更好地将一个机械化实例集成到我的班级中,任何关于它的指针都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

每次连接都会调用前后连接挂钩,因此如果存在重定向,则可能会多次触发一次请求。尝试只调用一次的history_added:

instance.history_added = Proc.new {sleep 2}

答案 1 :(得分:1)

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

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

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