PyMongo में कनेक्शन पूलिंग कैसे काम करती है?
<ब्लॉकक्वॉट>प्रत्येक कनेक्शन इंस्टेंस में अंतर्निहित कनेक्शन पूलिंग होती है। डिफ़ॉल्ट रूप से, प्रत्येक थ्रेड को अपने पहले ऑपरेशन पर अपना स्वयं का सॉकेट आरक्षित किया जाता है। उन सॉकेट्स को तब तक रखा जाता है जब तक कि उस थ्रेड द्वारा end_request() को कॉल नहीं किया जाता है।
कॉलिंग end_request () सॉकेट को पूल में वापस करने की अनुमति देता है, और एक नया सॉकेट बनाने के बजाय अन्य थ्रेड्स द्वारा उपयोग किया जा सकता है। इस पद्धति का विवेकपूर्ण उपयोग कई थ्रेड्स वाले अनुप्रयोगों के लिए या लंबे समय तक चलने वाले थ्रेड्स के लिए महत्वपूर्ण है जो PyMongooperations को कुछ कॉल करते हैं ।
वैकल्पिक रूप से, auto_start_request=False के साथ बनाया गया कनेक्शन सभी थ्रेड्स के बीच सॉकेट (सुरक्षित रूप से) साझा करेगा।
मुझे लगता है कि यह आपके पास किस प्रकार के एप्लिकेशन के लिए आता है और अनुरोध कितने समय तक कनेक्शन पर रहेगा। कॉल करने का विचार end_request
लंबे समय तक चलने वाले अनुरोधों को लंबे समय तक सॉकेट पर रखने और कई सॉकेट बनाने में मदद करता है। यदि कोई एकल अनुरोध कनेक्शन को तब जारी कर सकता है जब उसे अब इसकी आवश्यकता नहीं है, तो सॉकेट को अन्य अनुरोधों के लिए फिर से तैयार किया जा सकता है।
यदि वे तेज़ अनुरोध हैं, तो मेरा मानना है कि auto_start_request=False
सॉकेट का पुन:उपयोग करके काम करता है।
एक कनेक्शन सुनिश्चित करना एक ही सॉकेट का उपयोग करता रहता है जिसका अर्थ है कि इसमें लगातार पढ़ना होगा। सोचें कि क्या आपने कोई प्रश्न किया है लेकिन इसमें देरी हो गई है, और फिर तुरंत एक और प्रश्न किया और यह एक अलग सॉकेट का उपयोग करता है। यह सॉकेट पिछले से पहले प्रतिक्रिया करने का प्रबंधन करता है। आपके पास असंगत डेटा होगा क्योंकि यह पिछले लेखन को प्रतिबिंबित नहीं करता है।