2012-02-11 24 views
5

मैं विनियमित करने के लिए कितनी बार एक मशीनीकरण उदाहरण एक API के साथ जोड़ता है जरूरत सीमित (एक बार हर 2 सेकंड, ताकि या अधिक करने के लिए सीमा कनेक्शन)विनियमन/दर गहरे लाल रंग का मशीनीकरण

तो यह:

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

मैंने सोचा था कि यह काम करेगा, और यह करता है लेकिन अब उस वर्ग में हर विधि 2 सेकंड तक सोती है, जैसे कि मशीनीकरण उदाहरण छुआ है और 2 सेकेंड रखने के लिए कहा जाता है। मैं एक पोस्ट कनेक्ट हुक आज़माने जा रहा हूं, लेकिन यह स्पष्ट है कि मुझे कुछ और अधिक विस्तृत करने की ज़रूरत है, लेकिन मुझे इस बात पर क्या पता नहीं है।

कोड अधिक विवरण है, इसलिए यदि आप के साथ निम्नलिखित रुचि रखते हैं: अन्यथा मेरे सवाल चिंताओं कैसे कुशलतापूर्वक और प्रभावी ढंग (एक API द्वारा निर्दिष्ट एक विशिष्ट समय सीमा के भीतर करने के लिए एक मशीनीकरण उदाहरण की सीमा जहां अतिक्रमण कि सीमा परिणाम रेट करने के लिए गिरा दिया में https://github.com/blueblank/reddit_modbot, अनुरोध और प्रतिबंध)। साथ ही, मुझे लगता है कि मुझे अपनी कक्षा में एक मशीनीकरण उदाहरण को बेहतर एकीकृत करने की आवश्यकता है, जिस पर भी किसी भी पॉइंटर्स की सराहना की गई है।

+0

http://www.ruby-doc.org/core-1.9.2/Kernel.html#method-i- नींद मैं नींद का अनुमान लगा रहा हूं इस – blueblank

उत्तर

2

पहले और बाद के कनेक्ट हुक हर पर कहा जाता है कनेक्ट करते हैं, इसलिए यदि वहाँ कुछ पुनर्निर्देशन है यह एक अनुरोध के लिए कई बार चालू कर सकते। जो केवल एक बार कहा जाता हो जाता है history_added का प्रयास करें:

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

के लिए एक हथौड़ा बहुत बड़ा है यह काम करता है, और अब तक सबकुछ का गड़बड़ नहीं कर रहा है। – blueblank

1

मैं SlowWeb उपयोग की सीमा एक विशिष्ट URL के लिए कॉल रेट करने के लिए।

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

इस मामले में example.com डोमेन पर कॉल प्रत्येक 60 सेकंड तक 10 अनुरोध तक सीमित है।

संबंधित मुद्दे