WSGI를 사용하여 Apache 서버에 배포 된 Django 웹 애플리케이션을 개발해 왔으며 모든 것이 순조롭게 진행되었습니다. 오늘 저는 내장 admin.py
Django Admin 인터페이스를 사용자 정의하기 위해 내 앱을 약간 변경 하고 처음에는 구문 오류 (닫히지 않은 괄호)를 만들었습니다. 즉 wsgi.py
, 코드를 터치 하고로드 할 때 (내 가상 호스트에서 데몬 모드에서 WSGI를 실행하고 있음) 내 웹 사이트가 구문 오류가 발생했을 때 WSGI가 중지 되었기 때문에 내부 서버 오류로 대체되었습니다.
나는 구문 오류를 고정 그래서, 나는 더 이상으로하지 않았 음을 확인 manage.py check
하고, 감동을 wsgi.py
다시 배포. 하지만 내 웹 사이트에 여전히 내부 서버 오류가 표시됩니다! Apache 로그를 확인하면 다음과 같습니다.
[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
첫 번째 일련의 오류는 내 .NET의 구문 오류로 인해 WSGI가 실패했음을 보여줍니다 admin.py
. 그러나 두 번째 일련의 오류는 Django 내부 오류를 표시하는 것 같습니다.
RuntimeError: populate() isn't reentrant
의 populate
메서드 에서 던져졌습니다 registry.py
.
이 오류 메시지를 검색하면 놀랍게도 거의 정보가 반환되지 않으며 Django 문서에서는 제공되지 않습니다. 분명히에서 앱의 이름을 두 번 지정하면 때때로 발생할 수 settings.py
있지만 나는 그렇게하지 않습니다. 더 중요한 것은 settings.py
웹 사이트가 잘 작동했던 시점 이후로 변경하지 않았습니다 admin.py
. 내가 변경 한 유일한 것은 .
내가 만든 모든 변경 사항을 되돌리려 고했기 때문에 모든 Python 코드가 웹 사이트가 작동 할 때의 상태로 돌아 왔고 populate() isn't reentrant
WSGI에서 코드를 다시로드하려고 할 때 여전히 오류가 발생합니다!
또한의 INSTALLED_APPS 섹션에서 다른 앱을 주석 처리하려고 시도했으며 settings.py
'django.contrib.staticfiles'만 활성화해도 오류가 계속 발생합니다. 이상하게도 모든 앱을 주석 처리해도 여전히 오류가 발생 합니다 . Django는 앱을로드하지 않아도 오류가 발생합니다!
여기에서 무슨 일이 일어나고 있는지 아는 사람이 있습니까? 아니면 아파치 로그의 역 추적이 거의 도움이되지 않기 때문에이 오류를 디버깅하는 더 좋은 방법이 있습니까?
참고 : Django 1.7, Apache 2.2 및 Python 2.7을 사용하고 있습니다.
wsgi.py
하면 동일한 Apache 오류가 발생하고 .pyc 파일이 다시 생성되지 않습니다.