【问题标题】:Regulating / rate limiting ruby mechanize调节/限速红宝石机械化
【发布时间】:2012-03-03 17:44:55
【问题描述】:

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

所以这个:

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

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

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

【问题讨论】:

标签: ruby mechanize mechanize-ruby


【解决方案1】:

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

instance.history_added = Proc.new {sleep 2}

【讨论】:

  • 这似乎是有效的,到目前为止并没有把其他一切都弄得一团糟。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-09-01
    • 2012-04-28
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    相关资源
    最近更新 更多