Django가 RuntimeError로 작동하지 않습니다 .Pulate () is n't reentrant


123

WSGI를 사용하여 Apache 서버에 배포 된 Django 웹 애플리케이션을 개발해 왔으며 모든 것이 순조롭게 진행되었습니다. 오늘 저는 내장 admin.pyDjango 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 reentrantWSGI에서 코드를 다시로드하려고 할 때 여전히 오류가 발생합니다!

또한의 INSTALLED_APPS 섹션에서 다른 앱을 주석 처리하려고 시도했으며 settings.py'django.contrib.staticfiles'만 활성화해도 오류가 계속 발생합니다. 이상하게도 모든 앱을 주석 처리해도 여전히 오류가 발생 합니다 . Django는 앱을로드하지 않아도 오류가 발생합니다!

여기에서 무슨 일이 일어나고 있는지 아는 사람이 있습니까? 아니면 아파치 로그의 역 추적이 거의 도움이되지 않기 때문에이 오류를 디버깅하는 더 좋은 방법이 있습니까?

참고 : Django 1.7, Apache 2.2 및 Python 2.7을 사용하고 있습니다.


2
주변에있을 수있는 모든 .pyc 파일을 제거하려고합니다.
dukebody 2014

아니요, 모든 .pyc 파일을 제거해도 도움이되지 않았습니다. 터치 wsgi.py하면 동일한 Apache 오류가 발생하고 .pyc 파일이 다시 생성되지 않습니다.
Edward

1
Apache를 다시 시작해 보셨습니까?
dukebody 2014

이 서버에 대한 권한이 없기 때문에 Apache를 다시 시작할 수 없습니다. 루트 액세스 권한이있는 관리자는 월요일까지 사무실에 돌아 오지 않습니다.
Edward

제 경우에는 환경의 INSTALLED_APPS에서 앱을 설치하지 않았습니다.
maciek

답변:


99

이것은 Django 설정 어딘가의 버그로 인해 발생합니다. 불행히도 장고는이 일반적이고 쓸모없는 오류 메시지 뒤에 버그를 숨기고 있습니다.

실제 문제를 나타내려면 django/apps/registry.py80 행을 열고 주위를 바꾸십시오.

raise RuntimeError("populate() isn't reentrant")

와:

self.app_configs = {}

이렇게하면 Django가 계속로드되고 실제 오류가 표시됩니다.

여러 가지 원인으로이 오류가 발생했습니다. 한 번은 내 앱의 admin.py 중 하나에 잘못된 가져 오기가 있었기 때문입니다.


22
이것은이 스레드에서 가장 유용한 답변입니다. 이제 알아요->django.core.exceptions.ImproperlyConfigured: psycopg2_version 2.5.4 or newer is required; you have 2.5 (dt dec pq3 ext)
RickyA 19

2
내 생명을 구했습니다. 이 솔루션을 통해 누락 된 요구 사항과 이들 간의 호환성 오류를 성공적으로 확인할 수있었습니다.
Ángel Jiménez

1
이것은 완벽했습니다. 한 줄을 변경하면 간단한 가져 오기 오류가 있음을 알 수 있습니다. 그 전에 무슨 일이 있었는지 알 수 없었습니다.
James

4
이 대답은 순금입니다.
xpanta

2
@RickyA와 이것은 내가이 답변을 귀찮게 할 필요조차 없었고 방금 시도 pip install --upgrade psycopg2하고 수정했기 때문에 가장 유용한 댓글 이었습니다.
사용자

65

내 서버의 관리자가 Apache를 다시 시작했고이 문제가 마술처럼 해결되었습니다. 정확히 동일한 Python 파일이 populate() isn't reentrant. 구문 오류가있는 다른 파일을로드 한 다음 수정하려고했는데 서버가 새 파일을로드하고 문제없이 올바르게 실행할 수있었습니다.

나는 아직도 무엇이 잘못되었는지 모르겠지만 문제가 사라졌기 때문에 이것을 답변으로 표시하고 있습니다. (글쎄, StackOverflow가 내 답변을 수락 할 수있게하자마자 답변 됨으로 표시하겠습니다.)

업데이트 : 실수로 구문 오류가있는 Python을 업로드 할 때이 오류가 계속 발생한 후 Apache를 다시 시작하는 것보다 쉬운 해결 방법을 찾았습니다. WSGI가 populate() isn't reentrant오류를 던지기 시작하면 Django 프로젝트 wsgi.py를 다음과 같은 간단한 함수로 바꿉니다 .

def application(environ, start_response):
    if environ['mod_wsgi.process_group'] != '': 
        import signal
        os.kill(os.getpid(), signal.SIGINT)
    return ["killed"]

그런 다음 웹 사이트를 다시로드하면 WSGI 데몬 프로세스가 다시 시작됩니다 (웹 사이트에 여전히 동일한 500 오류가 표시 되더라도 Apache 로그를 보면 알 수 있음).

그런 다음 wsgi.py다시 정상으로 변경 하고 다시로드하면 WSGI는 던지지 않고 코드를 성공적으로 선택합니다 populate() isn't reentrant(이번에는 구문 오류가 없다고 가정). 따라서 Apache 전체를 다시 시작할 필요가없고 WSGI 프로세스 만 있으면 루트 권한 없이도이를 수행 할 수 있습니다.


8
나에게 문제는 내 앱 중 하나에서 모델에 대한 변경 사항을 마이그레이션하는 것이 아닙니다.
user2662692

좋아, 나는 거의 같은 문제에 직면하고 있으며 예, 컴퓨터를 재부팅하고 서버를 다시 시작하면 해결됩니다. 그러나 문제는 계속 반복됩니다. 때때로 갑자기. 한 달 안에 세 번 발생했습니다. 누구든지 아이디어가 있으면 도와주세요.
Rohit

@Rohit, 상황에 대한 도움이 필요하면이를 설명하는 새 질문을 게시해야합니다. 여기 댓글에서 답을 얻지 못할 것입니다.
에드워드

4
startup-timeout장고가 초기화 될 때 일시적인 오류 복구에 도움 mod_wsgi에의 최신 버전에 mod_wsgi에의 데몬 모드 옵션은 데이터베이스를 사용할 수없는 것처럼. 시간 초과로 인해 WSGI 응용 프로그램이 시간 초과 기간 이후에 제대로로드되지 않으면 프로세스가 자동으로 다시 시작됩니다. 자신의 코드에 영구적 인 문제가있는 경우에도 도움이되지 않습니다. 이 경우 populate()코드가 실패한 실제 이유를 제공하므로 오류가 아닌 첫 번째 오류를 찾으 십시오.
Graham Dumpleton 2016 년

1
"이 간단한 기능을 갖춘 장고 프로젝트의 wsgi.py"란 무슨 뜻입니까? 파일을 함수로 어떻게 대체합니까?
Cerin 2017-10-27

46

나는 이것이 오래된 대답이라는 것을 알고 있지만 내 솔루션에 기여할 것입니다.

문제의 원인을 진단하고 manage.py check거기에서 찾은 것이 있는지 확인하는 방법으로

제 경우에는 오래된 요구 사항이 문제 였고 django는 하위 모듈을 가져 오지 못했습니다.

요구 사항이 최신 상태인지 확인


2
Apache에서 오류 500이 발생하고 문제를 찾을 수 없습니다. 이 명령으로 manage.py check문제를 발견했습니다. 감사합니다.
Ali Hesari

13

반응이 아니라 반영입니다.

django 1.7로 업그레이드 할 때 500 오류가 발생하고 페이지를 다시로드하면 Apache는 "populate ()가 재진입이 아닙니다"라고 말합니다. 페이지를로드 할 때 Apache가 앱에 필요한 모든 모듈을로드하고 오류가 처리되면 모듈을 언로드하지 않습니다. 따라서 페이지를 다시로드 할 때 아파치는 이러한 모듈을 다시로드하지만 이미로드되었습니다. 그래서 아파치는 "populate ()는 재진입이 아닙니다"라고 말합니다.

이 문제를 해결하기위한 두 가지 조치가 있습니다. 아파치를 다시 시작하거나 첫 번째 5OO 오류를 처리하는 오류를 수정합니다.

다음을 사용하여 아파치를 다시 시작하십시오.

sudo service httpd restart

도움이 되길 바랍니다.


10

Google App Engine을 사용할 때이 오류가 발생하면 로그에서 원인이 될 수있는 다른 오류를 확인하세요. 나는 얻고 있었다 :

ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3

Google App Engine과 함께 SQLite를 사용할 수 없으므로 해당 오류 및 오류 DATABASESsettings.py중지하는 섹션을 주석 처리하십시오 RuntimeError("populate() isn't reentrant").


이것은 모든 것이 로컬에서 잘 작동했지만 GAE에 배포 할 때 500 오류가 발생한 이유를 설명합니다. 작은 힌트 : GAE 로그 페이지에서 "raise"텍스트를 검색하면 정확히 하나의 히트가 생성되어 donturner가 지적한 오류 메시지가 표시되었습니다. 그의 솔루션은 내 하루를 구했습니다 :-)
Golden Thumb



2

나는 방금 같은 문제에 직면하여 주위를 둘러보기 시작했습니다.

이제 작동하게되었으므로 여러분과 공유해야한다고 생각했습니다!

모든 내가 그랬어 할 수 있었다 chown user:group /to/path -R그리고 chmod 770 /to/path -R다시 한번 그것은했다.


2

이것은 동일한 Apache mod-wsgi 오류에 대한 유효한 응답 모음처럼 보이며 각 사람이 자신에게 맞는 것을 게시하므로 여기에 내 것입니다.

배포 후 프로젝트 요구 사항을 업데이트하는 것을 잊지 마십시오 :)


2

나는이 같은 문제를 경험했고, 나에게 오류의 원인은 작업중인 파일의 구문 오류 일뿐이었습니다. 오타를 수정 한 후 populate() is not reentrant오류가 사라졌습니다.

wsgi 스크립트에서 django를 실행하는 경우 명령 줄에서 wsgi 스크립트를 실행하여 오타를 식별 할 수 있습니다. 예를 들면 :

cd /usr/local/www/wsgi-scripts/
python djangolauncher.wsgi

2

이 오류는 코드에서 공백과 탭이 일치하지 않는 경우에도 생성됩니다.


1

설정 : Ubuntu 14.04, Django 1.10, Python 3.5 (in virtualenv).

운없이 이러한 솔루션을 많이 시도했지만 Apache 오류 로그에 두 가지 다른 오류가 포함되어 있음을 알았습니다. 누군가가 페이지를 방문하려고 할 때 발생하는 것이고 다른 하나는 시작할 때 발생합니다. 일반적으로 페이지를 몇 번 새로 고치려고 시도하여 방문 오류가 몇 번만 반복되는 것을 보았 기 때문에 시작을 놓쳤습니다.

그런 다음 대신 시작 오류에 대한 해결책을 찾았고이 질문에 대한 해결책 이 저에게 효과적이었습니다 . 간단히 말하면 mod_wsgi원형 교차로 방식으로 패키지를 업데이트하는 것입니다.

mod_wsgi버전 불일치에 대한 경고를 몇 달 동안 받았지만 갑자기 Apache 오류 500이 발생했습니다. 나에겐 말이 안 돼.

내 생각에이 RuntimeError: populate() isn't reentrant오류는 일반적으로 실제 문제를 나타내는 시작 오류를 찾아야한다는 신호입니다.

방문 중

[Sat Oct 15 03:38:08.900966 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Target WSGI script '/django/GP/GP/wsgi.py' cannot be loaded as Python module.
[Sat Oct 15 03:38:08.901409 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Exception occurred processing WSGI script '/django/GP/GP/wsgi.py'.
[Sat Oct 15 03:38:08.901662 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] Traceback (most recent call last):
[Sat Oct 15 03:38:08.902184 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/GP/GP/wsgi.py", line 16, in <module>
[Sat Oct 15 03:38:08.902217 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     application = get_wsgi_application()
[Sat Oct 15 03:38:08.902501 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
[Sat Oct 15 03:38:08.902529 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     django.setup(set_prefix=False)
[Sat Oct 15 03:38:08.902726 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/__init__.py", line 27, in setup
[Sat Oct 15 03:38:08.902755 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     apps.populate(settings.INSTALLED_APPS)
[Sat Oct 15 03:38:08.902924 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/apps/registry.py", line 78, in populate
[Sat Oct 15 03:38:08.902953 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     raise RuntimeError("populate() isn't reentrant")
[Sat Oct 15 03:38:08.903111 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] RuntimeError: populate() isn't reentrant

시작

[Sat Oct 15 03:38:08.900966 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Target WSGI script '/django/GP/GP/wsgi.py' cannot be loaded as Python module.
[Sat Oct 15 03:38:08.901409 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] mod_wsgi (pid=28272): Exception occurred processing WSGI script '/django/GP/GP/wsgi.py'.
[Sat Oct 15 03:38:08.901662 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] Traceback (most recent call last):
[Sat Oct 15 03:38:08.902184 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/GP/GP/wsgi.py", line 16, in <module>
[Sat Oct 15 03:38:08.902217 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     application = get_wsgi_application()
[Sat Oct 15 03:38:08.902501 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
[Sat Oct 15 03:38:08.902529 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     django.setup(set_prefix=False)
[Sat Oct 15 03:38:08.902726 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/__init__.py", line 27, in setup
[Sat Oct 15 03:38:08.902755 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     apps.populate(settings.INSTALLED_APPS)
[Sat Oct 15 03:38:08.902924 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]   File "/django/env/lib/python3.5/site-packages/django/apps/registry.py", line 78, in populate
[Sat Oct 15 03:38:08.902953 2016] [:error] [pid 28272] [remote 95.166.81.114:39651]     raise RuntimeError("populate() isn't reentrant")
[Sat Oct 15 03:38:08.903111 2016] [:error] [pid 28272] [remote 95.166.81.114:39651] RuntimeError: populate() isn't reentrant
[Sat Oct 15 03:38:43.291502 2016] [:error] [pid 28272] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Sat Oct 15 03:38:43.291579 2016] [:error] [pid 28272] Traceback (most recent call last):
[Sat Oct 15 03:38:43.291604 2016] [:error] [pid 28272]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Sat Oct 15 03:38:43.292356 2016] [:error] [pid 28272]     assert tlock is not None
[Sat Oct 15 03:38:43.292377 2016] [:error] [pid 28272] AssertionError: 
[Fri Oct 14 23:38:43.412942 2016] [:error] [pid 28299] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.413044 2016] [:error] [pid 28299] Traceback (most recent call last):
[Fri Oct 14 23:38:43.413076 2016] [:error] [pid 28299]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.425037 2016] [:error] [pid 28275] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.425125 2016] [:error] [pid 28275] Traceback (most recent call last):
[Fri Oct 14 23:38:43.425157 2016] [:error] [pid 28275]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.427625 2016] [:error] [pid 28274] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.427694 2016] [:error] [pid 28274] Traceback (most recent call last):
[Fri Oct 14 23:38:43.427722 2016] [:error] [pid 28274]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.432020 2016] [:error] [pid 28273] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.432078 2016] [:error] [pid 28273] Traceback (most recent call last):
[Fri Oct 14 23:38:43.432105 2016] [:error] [pid 28273]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.438577 2016] [:error] [pid 28299]     assert tlock is not None
[Fri Oct 14 23:38:43.438654 2016] [:error] [pid 28299] AssertionError: 
[Fri Oct 14 23:38:43.442174 2016] [:error] [pid 28274]     assert tlock is not None
[Fri Oct 14 23:38:43.442226 2016] [:error] [pid 28274] AssertionError: 
[Fri Oct 14 23:38:43.447227 2016] [:error] [pid 28276] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.447294 2016] [:error] [pid 28276] Traceback (most recent call last):
[Fri Oct 14 23:38:43.447326 2016] [:error] [pid 28276]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.448813 2016] [:error] [pid 28277] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Fri Oct 14 23:38:43.448876 2016] [:error] [pid 28277] Traceback (most recent call last):
[Fri Oct 14 23:38:43.448903 2016] [:error] [pid 28277]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Fri Oct 14 23:38:43.450188 2016] [:error] [pid 28273]     assert tlock is not None
[Fri Oct 14 23:38:43.450231 2016] [:error] [pid 28273] AssertionError: 
[Fri Oct 14 23:38:43.456680 2016] [:error] [pid 28275]     assert tlock is not None
[Fri Oct 14 23:38:43.456737 2016] [:error] [pid 28275] AssertionError: 
[Fri Oct 14 23:38:43.461761 2016] [:error] [pid 28277]     assert tlock is not None
[Fri Oct 14 23:38:43.461826 2016] [:error] [pid 28277] AssertionError: 
[Fri Oct 14 23:38:43.466165 2016] [:error] [pid 28276]     assert tlock is not None
[Fri Oct 14 23:38:43.466219 2016] [:error] [pid 28276] AssertionError: 
[Fri Oct 14 23:38:43.658971 2016] [mpm_prefork:notice] [pid 28268] AH00169: caught SIGTERM, shutting down
[Sat Oct 15 03:38:43.691909 2016] [:error] [pid 28272] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Sat Oct 15 03:38:43.691968 2016] [:error] [pid 28272] Traceback (most recent call last):
[Sat Oct 15 03:38:43.691996 2016] [:error] [pid 28272]   File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Sat Oct 15 03:38:43.693126 2016] [:error] [pid 28272]     assert tlock is not None
[Sat Oct 15 03:38:43.693159 2016] [:error] [pid 28272] AssertionError: 
[Fri Oct 14 23:38:44.490316 2016] [:warn] [pid 28349] mod_wsgi: Compiled for Python/3.4.0.
[Fri Oct 14 23:38:44.490407 2016] [:warn] [pid 28349] mod_wsgi: Runtime using Python/3.4.3.
[Fri Oct 14 23:38:44.505672 2016] [mpm_prefork:notice] [pid 28349] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.19 mod_wsgi/3.4 Python/3.4.3 configured -- resuming normal operations
[Fri Oct 14 23:38:44.505764 2016] [core:notice] [pid 28349] AH00094: Command line: '/usr/sbin/apache2'

새 질문을 만듭니다. 답변으로 질문하지 마십시오.
Graham Dumpleton 2016 년

1
나는 질문하는 것이 아닙니다. 나를 위해 일한 동일한 문제에 대한 솔루션 게시. Apache에서 오류 500이 발생하고 로그 파일의 오류는 여기에서 묻는 질문의 오류와 동일합니다. 내 대답을 다시 읽으십시오. :)
CoderGuy123

그런 다음 다른 질문으로 연결하지 말고 답변에 실제 솔루션을 포함하십시오. 문제는 다른 게시물이 populate()문제를 전혀 언급하지 않고 나에게 완전히 다른 문제처럼 보이므로 동일한 문제를 어떻게 해결했다고 생각하는지 알 수 없다는 것입니다. 누구나 알 수있는 한, 다른 게시물의 세부 사항에 따라 다른 문제처럼 보이는 것에 대해 여기에있는 답변을 혼동하기보다는 처음에 별도의 질문을해야하는 다른 문제가있었습니다.
Graham Dumpleton

여기에서 단계를 반복 할 필요가 없습니다. 오류는 동일한 로그에 나타납니다. 여기서 OP에는 모든 오류가 포함되지 않았습니다. 페이지에 액세스 할 때 하나의 오류가 표시되고 (여기에서 OP의 일부) 아파치가 시작될 때 다른 오류가 표시됩니다 (다른 스레드의 일부).
CoderGuy123

1

이 질문을 한 지 오래되었지만 여기서 논의하지 않은 문제로 인해 방금이 문제가 발생했습니다. 나는 얻고 있었다 RuntimeError: populate() isn't reentrant나는 장고는 홈 디렉토리 밖으로 제공했다 CentOS는 7. 인해 SELinux가에 오류 및 채우기 () 오류가 권한 문제 때문으로 난 그저, 홈 디렉토리를 읽는 허용 된 SELinux 부울 수 있도록했다. 나를위한 해결책은 setsebool -P httpd_read_user_content 1. 이 문제가있는 사람에게 도움이되기를 바랍니다.


CentOS 7과 SELinux에서도 같은 문제가있었습니다. 를 사용 chcon하여 문제 .so파일 의 컨텍스트 를 httpd_sys_script_exec_t .
Jon

1

수많은 답변이이를 명확하게합니다. 이는 일반적으로 Apache / WSGI로드와 관련된 여러 근본 원인이있을 수있는 일반 오류입니다.

이 페이지의 모든 답변은 일종의 체크리스트로 작동해야하며, 그 맥락에서이 오류의 근본 원인을 추가하고 싶습니다. settings.py 파일에 'import os'를 추가하지 못했습니다.

특히, 우리 팀에는 불필요한 패키지를 제거하고 대신 프로덕션 settings.py 파일 상단에서 'import os'를 제거하려는 개발자가있었습니다. 아파치가 다시 시작된 후 응용 프로그램이 다시 시작되지 않고 'RuntimeError : populate () is n't reentrant'오류가 발생했습니다.

빠른 'python manage.py 확인'은 문제를 드러내지 않았지만 'python settings.py'는 확인했습니다. os 패키지가로드되지 않았습니다.

이 오류가 발생하면 settings.py 파일과 WSGI 파일을 확인하는 데 초점을 맞 춥니 다.


3
더 중요한 것은 오류 로그로 돌아가서 Apache 또는 mod_wsgi 데몬 프로세스 중 하나를 다시 시작한 후 발생하는 첫 번째 오류 메시지를 찾는 것입니다. 첫 번째 오류는 오류의 실제 원인을 알려줍니다. 이후 동일한 프로세스에 대한 요청은 reentrant오류 만 언급합니다 . 데몬 모드에서 startup-timeout코딩 오류가 아닌 일시적인 오류로 인해이 문제가 발생하는 경우 옵션 을 사용하고 있는지 확인하십시오 . 적어도 그렇게하면 자동으로 복구 할 수 있습니다.
Graham Dumpleton 2018

이것이 정답이고, 오류는 일반적입니다. 런타임 오류 바로 전에 메시지를 확인하십시오.
Popieluch

1

RuntimeError: populate() isn't reentrant

무엇이든 될 수 있기 때문에이 질문에 대한 다양한 답변이 있습니다.

트릭은 RuntimeError. 귀하의 경우 15 줄의 /extra/www/htmlquotes/quotes_django/quotespage/admin.py 파일에 구문 오류가있는 것 같습니다. 다음을 참조하십시오.

Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] File "/extra/www/htmlquotes/quotes_django/quotespage/admin.py", line 25
[Sun Nov 23 13:52:46 2014] [error] [client 128.84.33.19] pprove_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

1

AWS Elastic Beanstalk에 대한 참고 사항 : settings.pyDjango-admin이 작성한 기본값 에는 로컬 sqlite 데이터베이스에 대한 참조가 데이터 소스로 포함됩니다. 로컬 OS에서는 작동하지만 AWS EB에서는 작동하지 않으며 populate() isn't reentrant런타임 오류가 발생합니다. 이를 테스트하려면에서 DATABASES={<...>}명령문을 주석 처리하고 settings.py배포 한 다음 애플리케이션을 다시 엽니 다.


이는 예를 들어 기본 sqlite 데이터베이스와 함께 Django 버전 2.2 (또는 그 이상)를 사용하여 AWS EB에 배포하는 경우 발생합니다. 당신은거야 django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).의해 다음에 RuntimeError: populate() isn't reentrant. 로부터 AWS 워드 프로세서 : "장고 2.2은 탄성 콩나무 파이썬 3.6 플랫폼과 호환되지 않습니다." (작성 당시)
djvg

0

나는이 문제가 있었고 커밋을 역 추적 할 때까지 이유를 찾을 수 없었습니다. 자동 완성으로 인해 실수로 가져 오기를 추가하여 설정을 망친 것 같습니다.

# found in models.py from msilib.schema import SelfReg

아파치 오류 로그 : RuntimeError ( "populate () is not reentrant")

내 Windows 개발 환경에서는 잘 작동했지만 우분투 / 아파치 서버에서는 실패했습니다.


0

이 설정의 순서를 변경 한 후 동일한 오류가 발생했습니다.

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

이전에 주문에 다시 넣고 아파치를 다시 시작하면 문제가 해결되었습니다.


0

제 경우에는 custom renderer classfor Django Rest Framework를 사용했습니다. 어떤 목적으로 렌더러 클래스의 메서드 "get_context"를 재정의해야했습니다 (전체 공개 : django toolbar올바른 SQL 쿼리 수를 제공 하기 위해 )

그 클래스를 제거하고 재배치했습니다. 작동했습니다.


0

제 경우에는 필수 pip-package가 누락되어 오류가 발생했습니다.

그래서 나는 pip install -r requirements.txt아파치를 다시 시작했고 모든 것이 다시 작동했습니다.


0

virtualenv 디렉토리를 제거하고 virtualenv를 다시 만든 다음 모든 요구 사항을 다시 설치하여 문제를 해결했습니다.


0

내 이유를 목록에 추가합니다. 저에게는 프로세스 디렉토리와 동일한 디렉토리로 이름이 지정된 django 서비스가 있었기 때문입니다. 프로세스 / 디렉터리 이름을 바꾸면 문제가 해결되었습니다.


0

나는 재귀를 가졌다. django.setup()예를 들어 스택 추적에서 django.setup()내부 를 작성 app/models.py하려고 시도했다. django는 이것을 근처에서 지적하려고했다.

... "site-packages/django/apps/config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
...
... ./myproject/myapp/models.py ...

그래서 예, django가 설정되는 동안 django 설정을 시도하지 마십시오 ...


0

나를 위해 Apache 서버를 다시 시작하면 문제가 해결되었습니다. $ sudo service apache2 restart 명령을 사용하여 수행 할 수 있습니다.


0

나는 이와 동일한 문제가 있었고 나를 위해 일한 것은 / settings.py의 기본 데이터베이스 설정을 주석 처리하는 것이 었습니다. 또한 이후 버전의 django는 ebs와 호환되지 않는다는 것을 읽었습니다.


0

나를 위해 오류는 mysqlclientrequirements.txt 파일에 누락 된 패키지 였습니다 .

먼저 다음 mysqlclient과 함께 패키지를 설치했습니다 .

pip install mysqlclient

그런 다음 requirements.txt 파일을 다음과 같이 업데이트했습니다.

pip freeze > requirements.txt

그리고 이것은 내 문제를 해결했습니다.



-1

2 유로 센트를 투입하려면 :

Docker에서 작업 설정을 다시 만들었습니다. 새 Docker 설정이 실패했습니다.

populate isn't reentrant

일반적인 오류 인 것 같습니다. 제 경우에는 간과했습니다.

pip install Django

필요한 버전 대신 최신 버전 ( 2.0)을 설치합니다 1.11. 이것을 다음으로 변경

pip install Django==1.11

내 문제를 해결했습니다.


-1

뭔가 잘못되었을 때 이것이 일반적인 오류라고 생각합니다 settings.py. 때로는 설치된 앱을 한 번에 하나씩 제거하여 시행 착오로 문제를 찾을 수 있습니다. 어떤 경우에는 설치된 앱과 관련이 없습니다. 그러나 내 경험상 모든 경우에 settings.py파일 내의 문제 입니다.


-1

settings.py의 설치된 앱 섹션에서 API 이름을 두 번 언급했는지 확인하십시오.

애플리케이션 정의

INSTALLED_APPS = [
    ...
    'rest_framework',
    'myapp_api',
    'myapp_api.apps.myappWebserviceApiConfig',    
]

애플리케이션 정의

INSTALLED_APPS = [
    ...
    'rest_framework',
    'myapp_api.apps.myappWebserviceApiConfig',
]

중복 항목을 제거하면 문제가 해결되었습니다.


하지만 튜토리얼은 INSTALLED_APPS = [ 'allauth', 'allauth.account', 'allauth.socialaccount',]
ming

@ming 선택 사항입니다.
Swati Srivastava
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.