मैं एक पायथन लाइब्रेरी पर काम कर रहा हूं जो एक वेब सेवा एपीआई के साथ इंटरफेस करता है। मुझे मिली कई वेब सेवाओं की तरह, यह अनुरोधों की दर सीमित करने का अनुरोध करता है। मैं क्लास इंस्टेंटेशन के लिए एक वैकल्पिक पैरामीटर, limit
प्रदान करना चाहता हूं, अगर प्रदान किया गया हो, तो निर्दिष्ट सेकंड्स की संख्या तक आउटगोइंग अनुरोधों को रोक दिया जाएगा।पायथन में वेब सेवाओं के अनुरोधों की दर को सीमित कैसे करें?
मैं समझता हूं कि सामान्य परिदृश्य निम्न है: कक्षा का एक उदाहरण किसी विधि के माध्यम से अनुरोध करता है। जब ऐसा होता है, तो विधि कुछ सिग्नल उत्सर्जित करती है जो कहीं लॉक वैरिएबल सेट करती है, और limit
में सेकंड की संख्या के लिए उलटी गिनती टाइमर शुरू करती है। (सभी संभावनाओं में, ताला उलटी गिनती टाइमर है।) यदि इस समय के फ्रेम में कोई अन्य अनुरोध किया गया है, तो यह कतारबद्ध होना चाहिए जब तक कि उलटी गिनती टाइमर शून्य तक न पहुंच जाए और ताला बंद हो जाए; इस बिंदु पर, कतार पर सबसे पुराना अनुरोध भेजा गया है, और उलटी गिनती टाइमर रीसेट हो गया है और लॉक फिर से जुड़ा हुआ है।
क्या यह थ्रेडिंग के लिए एक मामला है? क्या कोई और दृष्टिकोण है जिसे मैं नहीं देख रहा हूं?
उलटी गिनती टाइमर और ताला उदाहरण चर होना चाहिए, या वे वर्ग से संबंधित होना चाहिए, जैसे कि वर्ग पकड़ अनुरोधों के सभी उदाहरणों?
साथ ही, क्या यह आमतौर पर लाइब्रेरी के भीतर रेट-सीमित कार्यक्षमता प्रदान करने का एक बुरा विचार है? मेरा कारण है कि, डिफ़ॉल्ट रूप से, उलटी गिनती शून्य सेकंड होती है, लाइब्रेरी अभी भी डेवलपर्स को पुस्तकालय का उपयोग करने और अपनी खुद की दर-सीमित योजनाएं प्रदान करने की अनुमति देती है। सेवा का उपयोग करने वाले किसी भी डेवलपर्स को किसी भी तरह से अनुरोधों को रेट-सीमा करने की आवश्यकता होगी, हालांकि, मुझे लगता है कि लाइब्रेरी के लिए रेट-सीमित करने का साधन प्रदान करना एक सुविधा होगी।
बावजूद पुस्तकालय या नहीं में एक दर सीमित योजना रखने की, मैं लाइब्रेरी का उपयोग कर एक आवेदन लिखना चाहें, तो सुझाव तकनीक काम में आ जाएगा।
आपके सुझावों के लिए बहुत धन्यवाद!
क्रिस
बुरा धारणा इंतजार कर के लिए काम नहीं करेगा संभालने कर रहा हूँ। यह 2 सेकंड इंतजार कर रहा है।वह 2 सेकंड होगा। एक के अंत के बीच और दूसरे की शुरुआत के बीच। आमतौर पर आप 2 सेकंड चाहते हैं। एक की शुरूआत और दूसरे की शुरुआत के बीच। –
ठीक है, एक के अंत और एक अन्य की शुरुआत के बीच 2s इंतजार कर सुरक्षित करता है, तो सीमा कॉल के बीच वास्तविक समय के आधार पर किया जाता है असली मुद्दा यह है कि अपने समाधान, अनुरोधों के बीच 2s की तुलना में अधिक इंतजार कर रहा है अनुरोधों समय लग सकता है के बीच गणना के बाद से है हो सकता है। – Brian