我需要规定一个Mechanize实例与API连接的频率(每2秒一次,因此限制与该连接的连接或更多)
所以这个:
instance.pre_connect_hooks << Proc.new { sleep 2 }
我原以为这会起作用,而且它有点可行但是现在该类中的每个方法都会睡2秒钟,好像机械化实例被触摸并被告知保持2秒。我将尝试使用post connect hook,但显然我需要更复杂的东西,但是我不知道在这一点上是什么。
代码是更多解释,所以如果您对以下内容感兴趣:https://github.com/blueblank/reddit_modbot,否则我的问题涉及如何有效地将Mechanize实例的速率限制在API指定的特定时间范围内(超出该限制)导致请求和禁令被删除)。另外,我猜我需要更好地将一个机械化实例集成到我的班级中,任何关于它的指针都会受到赞赏。
答案 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个请求。