मैं WSGI के साथ Apache सर्वर पर तैनात एक Django वेब एप्लिकेशन को विकसित कर रहा हूं, और सब कुछ सुचारू रूप से चल रहा है। आज, मैंने admin.py
बिल्ड-इन Django व्यवस्थापक इंटरफ़ेस को अनुकूलित करने के प्रयास में अपने ऐप में कुछ छोटे बदलाव किए हैं , और शुरू में एक सिंटैक्स त्रुटि (एक अप्रकाशित कोष्ठक) बनाई है। इसका मतलब यह था कि जब मैंने wsgi.py
कोड को छुआ और लोड किया था (मेरे पास अपने वर्चुअल होस्ट पर डेमॉन मोड में चलने वाला WSGI है), तो मेरी वेबसाइट को एक आंतरिक सर्वर त्रुटि से बदल दिया गया क्योंकि WSGI ने सिंटैक्स त्रुटि पर रोक दिया।
इसलिए मैंने सिंटैक्स त्रुटि को ठीक किया, जाँच की कि मेरे पास कोई और नहीं है manage.py check
, और wsgi.py
फिर से काम करने के लिए छुआ । लेकिन मेरी वेबसाइट अभी भी एक आंतरिक सर्वर त्रुटि प्रदर्शित करती है! अपाचे लॉग की जाँच, यह वही है जो मैं देख रहा हूँ:
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Create interpreter 'quotes.cs.cornell.edu|'.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/extra/www/html/quotes/quotes_django' to path.
[Sun Nov 23 13:52:46 2014] [info] mod_wsgi (pid=19093): Adding '/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/' to path.
[Sun Nov 23 13:52:46 2014] [info] [client 128.84.33.19] mod_wsgi (pid=19093, process='quotes.cs.cornell.edu',
application='quotes.cs.cornell.edu|'): Loading WSGI script '/extra/www/html/quotes/quotes_django/quotes_django/
wsgi.py'.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Target WSGI script '/extra/www/html/
quotes/quotes_django/quotes_django/wsgi.py' cannot be loaded as Python module.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Exception occurred processing WSGI
script '/extra/www/html/quotes/quotes_django/quotes_django/wsgi.py'.
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] Traceback (most recent call last):
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/extra/www/html/quotes/quotes_django/
quotes_django/wsgi.py", line 14, in <module>
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] application = get_wsgi_application()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/core/wsgi.py", line 14, in get_wsgi_application
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] django.setup()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/__init__.py", line 21, in setup
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] apps.populate(settings.INSTALLED_APPS)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/apps/registry.py", line 115, in populate
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] app_config.ready()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/contrib/admin/apps.py", line 22, in ready
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] self.module.autodiscover()
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/contrib/admin/__init__.py", line 23, in autodiscover
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] autodiscover_modules('admin', register_to=site)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/utils/module_loading.py", line 74, in autodiscover_modules
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] import_module('%s.%s' % (app_config.name,
module_to_search))
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/usr/lib64/python2.7/importlib/__init__.py", line
37, in import_module
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] __import__(name)
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/extra/www/html/quotes/quotes_django/quotespage/
admin.py", line 25
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] approve_quotes.short_description = "Approve selected
quotes"
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] ^
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] SyntaxError: invalid syntax
[Sun Nov 23 13:53:36 2014] [info] [client 128.84.33.19] mod_wsgi (pid=19093, process='quotes.cs.cornell.edu',
application='quotes.cs.cornell.edu|'): Loading WSGI script '/extra/www/html/quotes/quotes_django/quotes_django/
wsgi.py'.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Target WSGI script '/extra/www/html/
quotes/quotes_django/quotes_django/wsgi.py' cannot be loaded as Python module.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] mod_wsgi (pid=19093): Exception occurred processing WSGI
script '/extra/www/html/quotes/quotes_django/quotes_django/wsgi.py'.
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] Traceback (most recent call last):
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] File "/extra/www/html/quotes/quotes_django/
quotes_django/wsgi.py", line 14, in <module>
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] application = get_wsgi_application()
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/core/wsgi.py", line 14, in get_wsgi_application
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] django.setup()
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/__init__.py", line 21, in setup
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] apps.populate(settings.INSTALLED_APPS)
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] File "/opt/rh/python27/root/usr/lib64/python2.7/site-
packages/django/apps/registry.py", line 78, in populate
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] raise RuntimeError("populate() isn't reentrant")
[Sun Nov 23 13:53:36 2014] [error] [client 128.84.33.19] RuntimeError: populate() isn't reentrant
त्रुटियों की पहली श्रृंखला डब्ल्यूएसजीआई को मेरे में वाक्य रचना त्रुटि के कारण विफल दिखाती है admin.py
। हालाँकि, त्रुटियों की दूसरी श्रृंखला Django के लिए एक आंतरिक त्रुटि दिखाती है:
RuntimeError: populate() isn't reentrant
की populate
विधि से फेंका गया registry.py
।
इस त्रुटि संदेश को देखते हुए आश्चर्यजनक रूप से बहुत कम जानकारी मिलती है, इसमें से कोई भी Django प्रलेखन से नहीं है। जाहिरा तौर पर, यह कभी-कभी हो सकता है यदि आप एक ऐप को दो बार अपने नाम देते हैं settings.py
, लेकिन मैं ऐसा नहीं कर रहा हूं। इससे भी महत्वपूर्ण बात, मैं settings.py
उस बिंदु से नहीं बदला हूं जहां वेबसाइट ठीक काम कर रही थी - केवल एक चीज जो मैंने बदल दी थी admin.py
।
मैंने अपने द्वारा किए गए सभी परिवर्तनों को वापस करने की कोशिश की, इसलिए मेरा सभी पायथन कोड उस स्थिति में वापस आ गया है जब वेबसाइट काम कर रही थी - और मुझे तब भी populate() isn't reentrant
त्रुटि मिलती है जब मैं WSGI कोड को फिर से लोड करने की कोशिश करता हूं!
मैंने INSTALLED_APPS अनुभाग में अलग-अलग ऐप पर टिप्पणी करने की कोशिश की है settings.py
, और यहां तक कि केवल 'django.contrib.staticfiles' के साथ भी त्रुटि अभी भी होती है। अजीब तरह से, मुझे अभी भी त्रुटि मिलती है, भले ही मैं सभी एप्लिकेशन को टिप्पणी करता हूं - Django किसी भी एप्लिकेशन को लोड नहीं करने पर भी त्रुटि फेंकता है!
क्या किसी को पता है कि यहाँ क्या हो रहा है? या मेरे लिए इस त्रुटि को डीबग करने का कोई बेहतर तरीका है, क्योंकि अपाचे लॉग में ट्रेसबैक बहुत ही अनपेक्षित है?
नोट्स: मैं Django 1.7, Apache 2.2, और Python 2.7 का उपयोग कर रहा हूं।
wsgi.py
एक ही अपाचे त्रुटि में टचिंग परिणाम, और .pyc फाइलें पुनः निर्मित नहीं होती हैं।