2010-03-07 10 views
10

एक रेल प्लगइन के लिए Google की कोशिश कर रहा है जो किसी विशेष संसाधन का अनुरोध करने वाले अनुरोधों की मात्रा को थ्रॉटल करने की अनुमति देगा। Django के Piston के लिए इसके लिए कुछ ओपन सोर्स कोड है। क्या रेल के लिए बॉक्स से कुछ उपलब्ध है या यह मानना ​​सुरक्षित है कि पिस्टन इसे कैसे करता है और इसे रेल प्लगइन के रूप में पोर्ट करना कुछ ऐसा है जिस पर काम किया जा सकता है? http://github.com/dambalah/api-throttlingरेल एपीआई पर रूबी के लिए थ्रॉटलिंग अनुरोध

और यहाँ कि मिडलवेयर के विकास के बारे में एक ब्लॉग पोस्ट है::

उत्तर

1

वहाँ एक एसओ के बारे में तुम क्यों सीमा रेट करने के लिए चाहते हो सकता है thread here है आपके आवेदन के बाहर। विचार के लिए भोजन, कम से कम। मैं खुद को इस समाधान की तलाश में हूं, और हवा में हूं कि क्या मैं इसे एप्लिकेशन लेयर में करना चाहता हूं।

2

Rack::Defense अनुरोध थ्रॉटलिंग और फ़िल्टरिंग के लिए एक रैक मिडलवेयर है। इसे स्थापित करना आसान है, इसमें एक छोटा पदचिह्न है और इसमें केवल दो निर्भरताएं हैं (रैक और रेडिस)। आप वास्तव में किसी भी मापदंड पर फ़िल्टर कर सकते हैं:

Rack::Defense.setup do |config| 
    config.throttle('login', 20, 60 * 1000) do |req| 
    req.ip if req.path == '/login' && req.post? 
    end 
end 
: आईपी, API टोकन, उपयोगकर्ता नाम आदि

यहाँ एक उदाहरण है कि कैसे आप आईपी प्रति प्रति मिनट 20 अनुरोध की एक अधिकतम दर के साथ पथ /login के लिए पोस्ट अनुरोध थ्रोटल होता है

कैसे API टोकन प्रति प्रति सेकंड 50 अनुरोध की एक अधिकतम दर के साथ पथ /api/* के लिए प्राप्त अनुरोधों रुके पर एक और उदाहरण:

Rack::Defense.setup do |config| 
    config.throttle('api', 50, 1000) do |req| 
    req.env['HTTP_AUTHORIZATION'] if %r{^/api/} =~ req.path 
    end 
end 

Disclamer: मैं रैक हूँ :: रक्षा gem मेंटेनर।

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