2013-05-14 15 views
9

जब भी मैं settings.py या डीजेंगो में किसी भी यादृच्छिक .py फ़ाइल में कहीं भी (यादृच्छिक) print कथन डालता हूं, तो यह दो बार मुद्रित हो जाता है। क्यूं कर?django सबकुछ दो बार क्यों चलाता है?

(settings.py में) TEMPLATE_DIRS पर मूल्य निर्धारित करने के बाद, बस इसे बाद एक प्रिंट बयान जोड़ें::

इस प्रयास करें print TEMPLATE_DIRS

और आप अपने टेम्पलेट्स निर्देशिका दो बार बाहर मुद्रित मिल जाएगा। या यदि आप पुराने फैशन महसूस कर रहे हैं, तो घोषित करने के ठीक बाद print "Hello World जोड़ें, और यह इसे दो बार प्रिंट करेगा।

कमान को चलाने के लिए: python manage.py runserver

उत्तर

20

यह इसे दो बार नहीं चल रहा है, यह 2 प्रक्रियाओं के लिए forking है और उन में से हर एक एक बार चल रहा है।

द्वारा उत्तर दिया: why is init module in django project loaded twice

यह केवल एक बार ... प्रक्रिया के अनुसार लोड किया जाना चाहिए। मैं अनुमान लगा रहा हूं कि manage.py forks, और दो अलग-अलग प्रक्रियाएं लॉन्च की गई हैं।

और an article.

इसे प्रमाणित करने के लिए यदि आप में जोड़ने के अपने settings.py

import os 
print(os.getpid()) 

यह पता 2 अलग प्रक्रिया आईडी दिखा रहा है कि यह 2 प्रक्रियाओं पैदा की है संख्या प्रिंट होगा।

django - settings.py seems to load multiple times?

+1

फिर भी उत्तर नहीं मिलता है क्यों:

आप on wikipedia.

यह forking के बारे में अधिक पढ़ सकते हैं भी का डुप्लिकेट लगता है। –

+0

यह @GamesBrainiac - 2 कांटा फोर्क किया गया है तो यह दो बार लोड और मुद्रित हो जाता है। – Ewan

+0

वास्तव में यहां बेवकूफ लगने के लिए खेद है, लेकिन इसका मतलब है, इससे "फोर्कड" हो जाता है। –

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