मेरे पायथन वेब एप्लिकेशन (विशेष रूप से, मोंगोडीबी कनेक्टिविटी के संबंध में मुद्दों) के साथ कुछ अजीब मुद्दों पर शोध करते समय, मैंने कुछ on the official PyMongo documentation page देखा। मेरा वेब एप्लिकेशन फ्लास्क का उपयोग करता है, लेकिन इससे मुझे जिस समस्या का सामना करना पड़ रहा है उसे प्रभावित नहीं करना चाहिए।PyMongo ऑटो रीकनेक्ट क्यों फेंकता है?
पायमोंगो ड्राइवर कनेक्शन पूलिंग करता है, लेकिन यह एक अपवाद (AutoReconnect
) भी फेंकता है जब कनेक्शन खराब हो जाता है और पुनः कनेक्ट होता है।
यह कहा गया है कि (AutoReconnect अपवाद के बारे में):
करने के लिए स्वत: पुन: कनेक्ट आप इस अपवाद संभाल चाहिए, कि आपरेशन जो यह कारण जरूरी सफल नहीं है पहचानने। भविष्य के संचालन डेटाबेस में एक नया कनेक्शन खोलने का प्रयास करेंगे (और पहले सफल कनेक्शन किए जाने तक इस अपवाद को जारी रखना जारी रखेंगे)।
मैंने देखा है कि यह वास्तव में लगातार होता है (और यह एक त्रुटि प्रतीत नहीं होता है)। कई मिनट निष्क्रियता की तरह लगने के बाद मोंगोडीबी सर्वर द्वारा कनेक्शन बंद कर दिए जाते हैं, और वेब एप्लिकेशन द्वारा पुन: निर्मित करने की आवश्यकता होती है।
मुझे यह समझ में नहीं आ रहा है कि जब यह पुन: कनेक्ट होता है तो पाइमोंगो चालक एक त्रुटि को फेंक देता है (जिसे चालक के उपयोगकर्ता को स्वयं को संभालने की आवश्यकता होती है), इसे पारदर्शी रूप से करने के बजाय। (उपयोगकर्ता भी सेट कर सकता है कि एक विकल्प भी हो सकता है ताकि AutoReconnect
अपवाद फेंक दिया जाए, लेकिन एक समझदार डिफ़ॉल्ट नहीं होगा कि इन अपवादों को बिल्कुल नहीं फेंक दिया जाए, और कनेक्शन निर्बाध रूप से फिर से बनाए गए हैं?)
मैंने कभी भी अन्य डेटाबेस सिस्टम का उपयोग करके इस व्यवहार का सामना नहीं किया है, यही कारण है कि मैं थोड़ा उलझन में हूं।
यह भी उल्लेखनीय है कि मेरे स्थानीय अनुप्रयोग मोंगोडीबी सर्वर से कनेक्ट होने पर मेरे वेब एप्लिकेशन के मोंगोडीबी कनेक्शन कभी विफल नहीं होते हैं (मुझे लगता है कि यह इस तथ्य से कुछ करने के लिए होगा कि यह एक स्थानीय कनेक्शन है, और यह कनेक्शन एक के माध्यम से किया जाता है नेटवर्क सॉकेट की बजाय यूनिक्स सॉकेट, लेकिन मैं गलत हो सकता था)।
पायथन ड्राइवर डेवलपर्स ने जेआईआरए मुद्दों में कुछ बार Autoreconnect को संबोधित किया है। शुरुआत के लिए [पायथन -197] (https://jira.mongodb.org/browse/PYTHON-197) पर एक नज़र डालें। यदि आप ऑटोरेकनेक्ट के बारे में जेआईआरए में पहले से ही पढ़ चुके हैं और संतुष्ट नहीं हैं, तो मैं एक पायथन टिकट खोलूंगा। – wdberkeley
इसे इंगित करने के लिए धन्यवाद!ऐसा लगता है जैसे मेरे जैसे गैर-पॉवर्यूसर, जो एक पूरी प्रतिकृति वाले मोंगो क्लस्टर को संचालित नहीं करते हैं, को छोड़ दिया गया है। क्या आपको कोई विचार है कि उन कनेक्शन वास्तव में क्यों बाहर निकलते हैं? सॉकेट बंद होने पर वे तुरंत विफल नहीं होना चाहिए? –
मैं कुछ और नहीं कह सकता था कि कनेक्शन बहुत अधिक जानकारी के बिना क्यों विफल रहे हैं। कनेक्शन बंद होने के बारे में मोंगोड लॉग में कुछ भी है? – wdberkeley