2009-11-25 13 views
6

जब मैं अपनी डीजेंगो प्रक्रिया शुरू करता हूं और किसी त्रुटि के मामले में शोर से मर जाता हूं तो मैं कुछ पर्यावरण जांच करना चाहता हूं। मैं सोच रहा हूं कि डेटाबेस जैसी चीजों में गलत एन्कोडिंग है या मशीन में एक पायथन संस्करण है जिसका हम समर्थन नहीं करते हैं।django में अतिरिक्त स्टार्टअप कोड डालने के लिए सही जगह?

मैं बल्कि हमारी टीम को एक घातक त्रुटि का सामना करना पड़ेगा, जिसे उन्हें अनदेखा करने में सक्षम होने के बजाय उन्हें ठीक करना होगा।

मैं इन चेकों को लिखने के साथ ठीक हूं लेकिन मुझे उत्सुकता है कि उन्हें कहां रखा जाना सबसे अच्छा स्थान है। मैं उन्हें django की स्टार्टअप प्रक्रिया के हिस्से के रूप में निष्पादित करने के लिए कैसे प्राप्त करूं? मैंने सोचा कि एक सिग्नल भी हो सकता है जिसे मैं भी सुन सकता हूं, लेकिन मुझे दस्तावेज़ों में प्रासंगिक नहीं मिल रहा है।

+0

देखें http://stackoverflow.com/questions/2781383/where-to-put-django-startup-code –

उत्तर

3

मैं उन्हें settings.py में डाल दूंगा। अतीत में, मैं इस तरह सिस्टम जांच डाल दिया है:

try: 
    from local_settings import * 
except ImportError: 
    print "Missing %s" % os.path.join(PROJECT_ROOT, "local_settings.py") 

if DEBUG: 
    for p in [PROJECT_ROOT, MEDIA_ROOT, THEME_DIR, ADMIN_MEDIA_ROOT] + list(TEMPLATE_DIRS): 
     p = os.path.normpath(p) 
     if not os.path.exists(p): 
      print "Missing path: %s" % p 
+1

मैं देख सकता हूं कि यह काम करेगा, हालांकि निष्पादन योग्य कोड और कॉन्फ़िगरेशन को मिलाकर "गलत" लगता है। –

+0

सुरे, मैं इसे खरीदूंगा। PiotrLegnica का सुझाव \ _ \ _ init \ _ \ _। Py अच्छा लगता है, हालांकि मुझे संदेह है कि आपको लोड होने पर सेटिंग.py.py में प्रारंभिक प्रारंभ किया जाएगा। इस सुरक्षा जांच के लिए – hughdbrown

+0

'settings.py' भी मेरी पसंद होगी। मैंने सोचा था कि एक पोस्ट-मॉडल-सत्यापन सिग्नल था (वैकल्पिक रूप से प्रबंधन कमांड द्वारा मॉडल सत्यापन की तरह), लेकिन मुझे स्रोत में कोई नहीं मिला। – Carson

4

आप सेटिंग्स मॉड्यूल का उपयोग नहीं करना चाहते हैं, तो इस परियोजना के __init__.py प्रयास करें।

4

यदि आप यह जांचना चाहते हैं कि सिस्टम सही तरीके से स्थापित है, तो मुझे लगता है कि आपको अपना own admin command लिखना चाहिए और इसे पोस्ट-इंस्टॉलेशन चेक के रूप में चलाएं।

मुझे लगता है कि यह जांचना उचित नहीं है कि पाइथन संस्करण सही ढंग से स्थापित किया गया है, खासकर यदि आप साझा-होस्ट पर django ऐप इंस्टॉल कर रहे हैं। मेरा ऐप हमेशाडाटा में होस्ट किया जाता है और वे हर घंटे फास्टसीजी प्रक्रिया को पुनरारंभ करते हैं। ये चेक एप्लिकेशन प्रतिक्रिया समय पर असर डाल सकते हैं।

3

हम इसके लिए शीर्ष-स्तर urls.py का उपयोग करते हैं।

+0

मैंने अपना प्रश्न आपके बाद के उत्तर में ले जाया है: http://stackoverflow.com/questions/6791911/execute-code-when-django-starts-once- केवल – Andrei

0

आप इसे दूसरों द्वारा उल्लिखित settings.py में डाल सकते हैं, लेकिन सेटिंग में कोड रखना आदर्श नहीं है। Django.db.models.signals.class_prepared के लिए एक हैंडलर जोड़ने का विकल्प भी है जो एक विशिष्ट मॉडल वर्ग तैयार होने के बाद वांछित स्टार्ट अप चेक करता है।

2

मैंने तीनों __init__.py सेटिंग.py और urls.py विधियों का परीक्षण किया है और यह मुझे मिला है।

जब कोड __init__.py या Settings.py से चलाया जाता है, तो स्टार्ट अप फ़ंक्शन वेब सर्वर शुरू होने पर चलाए जाते हैं; जब स्टार्ट अप फ़ंक्शंस urls.py से चलाए जाते हैं तो कोड एक बार चलाया जाता है, हालांकि यह केवल सर्वर के पहले अनुरोध पर ही चलाया जाता है जिससे पहले उपयोगकर्ता को आपकी साइट पर जाने के लिए संभावित रूप से लंबे समय तक प्रतीक्षा की जाती है।

यह जब बड़े वेब अनुप्रयोगों को वापस ऑनलाइन लाने के लिए एक 'वार्मिंग' पृष्ठ कॉल करने के लिए मानक अभ्यास तो मैं नहीं दिख रहा है कि urls.py में एक स्पष्ट रूप से पहचाना स्थान से एक समारोह शुरू बुला एक समस्या नहीं होनी चाहिए है।

संबंधित मुद्दे