पृष्ठभूमि:
मैं एक प्रोजेक्ट पर काम कर रहा हूं जो पोस्टग्रॉज़ डेटाबेस के साथ Django का उपयोग करता है। हम मामले में mod_wsgi का भी उपयोग कर रहे हैं जो मायने रखता है, क्योंकि मेरी कुछ वेब खोजों ने इसका उल्लेख किया है। वेब फ़ॉर्म सबमिट करने पर, Django का दृश्य एक ऐसी नौकरी को छोड़ देता है जिसमें पर्याप्त मात्रा में समय लगेगा (उपयोगकर्ता जितना इंतजार करना चाहेगा), इसलिए हम पृष्ठभूमि में एक सिस्टम कॉल के माध्यम से नौकरी को बंद कर देते हैं। अब जो काम चल रहा है, उसे डेटाबेस में पढ़ने और लिखने में सक्षम होना चाहिए। क्योंकि इस काम में इतना समय लगता है, हम इसके कुछ हिस्सों को समानांतर में चलाने के लिए मल्टीप्रोसेसिंग का उपयोग करते हैं।
मुसीबत:
शीर्ष स्तर की स्क्रिप्ट में डेटाबेस कनेक्शन होता है, और जब यह बाल प्रक्रियाओं को बंद कर देता है, तो ऐसा लगता है कि माता-पिता का कनेक्शन बच्चों के लिए उपलब्ध है। फिर क्वेरी से पहले SET TRANSPORTION ISOLATION LEVEL को कैसे बुलाया जाना चाहिए, इसके बारे में एक अपवाद है। अनुसंधान ने संकेत दिया है कि यह कई प्रक्रियाओं में एक ही डेटाबेस कनेक्शन का उपयोग करने की कोशिश के कारण है। एक थ्रेड मैंने पाया कि चाइल्ड प्रक्रियाओं की शुरुआत में कॉलिंग कनेक्शन। क्लोज () ताकि Django स्वचालित रूप से एक नया कनेक्शन बनाएगा जब उसे एक की आवश्यकता होगी, और इसलिए प्रत्येक बच्चे की प्रक्रिया का एक अनूठा कनेक्शन होगा - अर्थात साझा नहीं किया जाएगा। इसने मेरे लिए काम नहीं किया, क्योंकि चाइल्ड प्रोसेस में कनेक्शन.क्लास () कॉलिंग के कारण माता-पिता की प्रक्रिया यह शिकायत करती है कि कनेक्शन खो गया था।
अन्य खोजें:
कुछ चीजें जो मैंने पढ़ीं, ऐसा प्रतीत होता है कि आप वास्तव में ऐसा नहीं कर सकते हैं, और यह कि मल्टीप्रोसेसिंग, mod_wsgi, और Django अच्छी तरह से एक साथ नहीं खेलते हैं। मुझे लगता है कि विश्वास करना मुश्किल है।
कुछ ने अजवाइन का उपयोग करने का सुझाव दिया, जो एक दीर्घकालिक समाधान हो सकता है, लेकिन मैं इस समय अजवाइन स्थापित करने में असमर्थ हूं, कुछ अनुमोदन प्रक्रियाएं लंबित हैं, इसलिए अभी विकल्प नहीं है।
लगातार डेटाबेस कनेक्शन के बारे में एसओ और अन्य जगहों पर कई संदर्भ मिले, जो मुझे एक अलग समस्या मानते हैं।
इसके अलावा psycopg2.pool और pgpool के संदर्भ और बाउंसर के बारे में कुछ पाया गया। बेशक, मुझे समझ में नहीं आया कि मैं उन पर क्या पढ़ रहा था, लेकिन यह निश्चित रूप से मेरे लिए नहीं था जैसा कि मैं देख रहा था।
वर्तमान "वर्क-अराउंड":
अभी के लिए, मैं केवल धारावाहिक रूप से चलने वाली चीजों पर वापस लौट आया हूं, और यह काम करता है, लेकिन मैं जितना चाहूंगा उससे भी धीमा है।
किसी भी सुझाव के रूप में मैं कैसे समानांतर में चलाने के लिए मल्टीप्रोसेसिंग का उपयोग कर सकता हूं? ऐसा लगता है कि अगर मेरे पास माता-पिता और दो बच्चे हो सकते हैं, तो सभी के डेटाबेस से स्वतंत्र संबंध हैं, चीजें ठीक होंगी, लेकिन मैं उस व्यवहार को प्राप्त नहीं कर सकता।
धन्यवाद, और लंबाई के लिए खेद है!