2010-01-21 12 views
9

मैं अपने Django परियोजना में __init__.py मेंक्यों Django परियोजना में __init__ मॉड्यूल लोड है दो बार

print 'Hello world!' 

डाल दिया। जब मैं अब ./manage.py runserver चलाने के लिए, मैं

[email protected]:~/Programy/project$ ./manage.py runserver 
Hello world! 
Hello world! 
Validating models... 
0 errors found 

मिल क्यों __init__.py रन में दो बार है? इसे केवल एक बार लोड किया जाना चाहिए।

उत्तर

22

इसे केवल एक बार लोड किया जाना चाहिए ... प्रति प्रक्रिया। मैं अनुमान लगा रहा हूं कि manage.py कांटे, और दो अलग-अलग प्रक्रियाएं लॉन्च की गई हैं। क्या आप os.getpid() के परिणाम प्रिंट कर सकते हैं?

+15

दाएं। Django पुनः लोड करने की सुविधा (यानी कोड परिवर्तन पर पुनरारंभ) के लिए दो प्रक्रियाओं का उपयोग करता है, यदि आप './manage.py रनरवर - नोरेलोड' चलाते हैं तो आपको केवल एक ही प्रक्रिया मिलती है। – Iftah

+0

यदि आप 'os.system (' date +% Z ') के साथ सिस्टम टाइमज़ोन की जांच करते हैं, तो पहली बार यह आपका स्थानीय टाइमज़ोन है। दूसरी बार यह यूटीसी है, यह मानते हुए कि आपके पास 'settings.pyONE = 'UTC''' settings.py' में है। – osa

0

पता लगाने का एक आसान तरीका अपवाद उठाना होगा। शायद आपके init .py में कुछ इस तरह:

import os 
if os.path.isfile('/tmp/once.log'): 
    raise Exception 
open('/tmp/once.log','w').write('first time') 

तो फिर तुम ट्रैस बैक निरीक्षण कर सकते हैं।

+0

या आप ब्रेकपॉइंट डाल सकते हैं और डीबगर में देख सकते हैं ... – Iftah

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