हमारे पास बीस मॉड्यूल के साथ एक पायथन एप्लिकेशन है, जिनमें से अधिकांश कई वेब और कंसोल अनुप्रयोगों द्वारा साझा किए जाते हैं।मुझे बहु-मॉड्यूल पायथन ऐप में डेटाबेस कनेक्शन कैसे स्थापित और प्रबंधित करना चाहिए?
मुझे बहु मॉड्यूल पायथन ऐप्स में डेटाबेस कनेक्शन की स्थापना और प्रबंधन के लिए सर्वोत्तम अभ्यास की स्पष्ट समझ नहीं मिली है। इस उदाहरण पर विचार करें:
मेरे पास उपयोगकर्ताओं के लिए ऑब्जेक्ट क्लास को परिभाषित करने वाला एक मॉड्यूल है। डेटाबेस में उपयोगकर्ताओं को बनाने/हटाने/अपडेट करने के लिए इसमें कई डीफ़ हैं। User.py मॉड्यूल को एक कंसोल आधारित उपयोगिता में आयात किया जाता है, 2) एक वेब.py आधारित वेब अनुप्रयोग और 3) लगातार चलने वाली डिमन प्रक्रिया।
इन तीनों में से प्रत्येक एप्लिकेशन में अलग-अलग जीवन चक्र होते हैं। डिमन एक कनेक्शन खोल सकता है और इसे खोल सकता है। कंसोल यूटिलिटी कनेक्ट करता है, काम करता है, फिर मर जाता है। बेशक http अनुरोध परमाणु हैं, हालांकि वेब सर्वर एक डिमन है।
मैं वर्तमान में उपयोगकर्ता वर्ग में प्रत्येक फ़ंक्शन के अंदर कनेक्शन बंद करने का उपयोग कर खोल रहा हूं। यह सबसे अक्षम लगता है, लेकिन यह सभी उदाहरणों में काम करता है। परीक्षण के रूप में उपयोग किया जाने वाला एक विकल्प पूरे मॉड्यूल के लिए वैश्विक कनेक्शन घोषित करना और खोलना है। एक और विकल्प शीर्ष अनुप्रयोग परत पर कनेक्शन बनाना होगा और कक्षाओं को तुरंत चालू करते समय संदर्भों को पास करना होगा, लेकिन यह मेरे लिए सबसे बुरा विचार है।
मुझे पता है कि प्रत्येक एप्लिकेशन आर्किटेक्चर अलग है। मैं बस सोच रहा हूं कि क्या कोई अच्छा अभ्यास है, और यह क्या होगा?
इस [प्रश्न] के अनुसार कनेक्शन पूलिंग देखें (http://stackoverflow.com/questions/98687/what-is-the-best-solution-for-database-connection-pooling-in-python) – Mark