जाहिरा तौर पर आप डिस्कनेक्ट नहीं करते हैं। db.close_connection()
का उपयोग करना क्वेरी खत्म होने के बाद मदद मिलेगी। इसके अलावा अगर मुझे यह सही लगे CONN_MAX_AGE
कुछ कम मूल्य के लिए मदद कर सकता है। और कुछ सत्र पूलर का उपयोग करने पर विचार करें, उदाहरण के लिए django कनेक्शन के लिए pgbouncer। इस तरह यदि आपके पास बहुत अधिक कनेक्शन हैं तो यह त्रुटि के साथ निष्पादन को निरस्त करने के बजाय प्रतीक्षा करेगा (या कॉन्फ़िगरेशन के आधार पर पिछले पुन:उपयोग करेगा)...
अपडेट करें :स्पष्टीकरण मैं इसे क्यों प्रस्तावित करता हूं
इसलिए यदि आपके पास अधिक थ्रेड हैं तो max_connections
. पोस्टग्रेज करें , आपको त्रुटि का उल्लेख मिलता है। यदि CONN_MAX_AGE पास नहीं हुआ है, तो प्रत्येक थ्रेड कनेक्शन का पुन:उपयोग कर सकता है। आपकी सेटिंग 0 है, इसलिए क्वेरी पूरी होने के बाद कनेक्शन बंद हो जाना चाहिए, लेकिन आप 100 निष्क्रिय कनेक्शन देखते हैं। इसलिए वे बंद नहीं हो रहे हैं। बड़ी संख्या में कनेक्शन का मतलब है कि उनका पुन:उपयोग नहीं किया जाता है (तर्क:यदि आपके पास 100 समानांतर प्रश्न होंगे तो वे सभी निष्क्रिय नहीं होंगे, और यदि आपके पास इतने सारे हैं, तो उनका पुन:उपयोग नहीं किया जाता है - नया खोलना)। तो मुझे लगता है कि django उन्हें वादे के अनुसार बंद नहीं करता है - इसलिए CONN_MAX_AGE 0 पर सेट आपके कोड में काम नहीं करता है। इसलिए मैं db.close_connection()
. का उपयोग करने का प्रस्ताव करता हूं डिस्कनेक्ट करने के लिए बाध्य करने और CONN_MAX_AGE को कुछ छोटे मान पर सेट करने से व्यवहार बदल सकता है।