2012-02-11 72 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個請求。