2012-07-23 39 views
7

Django डॉक्स स्पष्ट रूप सेरनटाइम पर django सेटिंग्स को क्यों नहीं बदला जाना चाहिए?

आप क्रम में अपने अनुप्रयोगों में सेटिंग को बदल नहीं करना चाहिए।

यहाँ यह क्यों इतना है link to that statement

मेरा प्रश्न है,? मैं रनटाइम पर गतिशील रूप से अनुप्रयोगों को जोड़ना चाहता हूं, और रनटाइम पर डेटाबेस जोड़ना चाहता हूं, जिनमें से दोनों सेटिंग्स को संपादित करना शामिल हैं। क्या कोई बता सकता है कि रनटाइम पर सेटिंग्स क्यों संपादित नहीं की जा रही हैं और यदि अपवाद मौजूद हैं, तो वे कौन सी सेटिंग्स हैं और वे असाधारण क्यों हैं? मुझे अपने लक्ष्य को कैसे प्राप्त किया जाए, इस बारे में बहुत दिलचस्पी नहीं है, लेकिन इस कारण से सेटिंग्स को क्यों बदला नहीं जाना चाहिए।

+0

मैं https://docs.djangoproject.com/en/dev/ref/settings/ पर एक नज़र था, और यह ऐसा नहीं है नतीजतन मुझे इन करने लगता है सभी सेटिंग्स है कि * आवेदन स्टार्टअप पर लागू होते हैं। *, रनटाइम पर उन्हें संशोधित करने के लिए बहुत समझदारी है। –

उत्तर

5

यदि आप उन्हें रनटाइम पर बदलते हैं तो अधिकांश सेटिंग्स फिर से पढ़ी नहीं जाएंगी। तो Django आपके द्वारा किए गए परिवर्तनों को पहचान नहीं पाएगा।

यह इस तथ्य के कारण है कि Django सामान्य पाइथन कोड है। यह ऐसे सर्वर की तरह नहीं है जो आपके कोड की निगरानी कर रहा है - यह केवल आपके कोड का हिस्सा है।

कुछ मामलों में, Django कोड के कुछ हिस्सों में सेटिंग्स में परिवर्तनों का जवाब हो सकता है, क्योंकि वे हर बार मेल भेजे जाने पर 'settings.DEFAULT_FROM_EMAIL' कर सकते हैं।

लेकिन यदि Django किसी भी तरह से सेटिंग को संसाधित करता है, जैसे इसे INSTALLED_APPS के लिए करना है, तो यह ध्यान देने योग्य नहीं है कि आपने कुछ बदल दिया है और प्रसंस्करण को दोबारा कर दिया है।

कौन सी सेटिंग्स सुरक्षित हैं? खैर, दस्तावेज़ कह रहे हैं "कोई भी सुरक्षित नहीं है", क्योंकि यह भविष्य में बदल सकता है। Django किसी कारण से किसी भी सेटिंग की एक प्रति सहेज सकता है, या कुछ प्रसंस्करण कर सकते हैं।

INSTALLED_APPS बदलना कभी भी काम पर नहीं किया जा सका, क्योंकि यह बदलता है कि कौन से मॉड्यूल आयात किए जाते हैं। वहाँ बस कोई रास्ता नहीं है कि Django तरीका है कि अजगर इस स्तर पर काम करता है के आसपास काम कर सकता है - यह मॉड्यूल, जो मूल रूप से असंभव है 'unimport' करने में सक्षम हो की आवश्यकता होगी (एक ही रास्ता प्रक्रिया पुनः आरंभ करने के लिए है), और अन्य देखते हैं पार एप्लिकेशन लिंक से जुड़ी समस्याओं।

1

AFAIK कोई दस्तावेज नहीं है जिस पर रनटाइम पर सेटिंग्स सुरक्षित रूप से संशोधित हैं, लेकिन open ticket पूछ रहा है कि उन्हें अधिक स्पष्ट रूप से दस्तावेज किया गया है।

+0

किसी की अपनी सेटिंग्स के बारे में कैसे परिवर्तनीय है? जैसे सेटिंग्स में एक खाली शब्दकोश बनाएं, और सिस्टम चालू होने की अवधि के दौरान डेटा जोड़ें (इस मामले में यदि सिस्टम पुनरारंभ पर डेटा खो जाता है तो यह अप्रासंगिक है)। – Derek

1

यदि आप सेटिंग प्रोजेक्ट पर look under the hood लेते हैं तो Django आपके प्रोजेक्ट के सेटिंग मॉड्यूल के साथ इंटरफ़ेस का खुलासा करता है, तो आप देखेंगे कि रनटाइम पर सेटिंग्स को गतिशील रूप से बदलने के लिए आपको कुछ भी नहीं रोक रहा है।

हालांकि, आपको यह सराहना करना चाहिए कि ढांचे का आर्किटेक्चर एक अनुरोध-प्रतिक्रिया प्रवाह के आसपास बनाया गया है जहां स्मृति के अनुकूलन के लिए थ्रेड के बीच बहुत से वैश्विक राज्य साझा किए जा रहे हैं, इस आधार पर कि एप्लिकेशन प्रारंभ में केवल एक बार कॉन्फ़िगर किया गया है ।