2012-02-11 4 views
5

기계화 제한 (한 번 매 2 초마다, 그래서 그 이상으로 제한 연결)조절/속도 루비 나는 기계화 인스턴스가 API와 연결하는 빈도를 조절해야 할

그래서이 :

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

답변

2

모든 연결에서 이전 및 후 연결 후크가 호출되므로 일부 리디렉션이있는 경우 한 요청에 대해 여러 번 트리거 할 수 있습니다. 한 번만 호출됩니다있는 history_added보십시오 :

instance.history_added = Proc.new {sleep 2} 
+0

이것은 작동하는 것 같습니다. 지금까지는 다른 모든 것을 엉망으로 만들지 않습니다. – blueblank

1

내가 한계가 특정 URL 호출 속도로 SlowWeb를 사용합니다.

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

이 경우 example.com 도메인에 대한 호출은 60 초마다 10 회의 요청으로 제한됩니다.