当我尝试在生产环境中加载Django应用程序时,我会不断收到此消息。我尝试了所有stackoverflow答案,但没有任何解决方法。还有其他想法。(我正在使用Django 1.5.2和Apache)
Traceback (most recent call last): File "/var/www/thehomeboard/wwwhome/wsgi.py", line 37, in <module> application = get_wsgi_application() File "/usr/local/lib/python2.7/dist-packages/django/core/wsgi.py", line 14, in get_wsgi_application django.setup() File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 18, in setup apps.populate(settings.INSTALLED_APPS) File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 78, in populate raise RuntimeError("populate() isn't reentrant") RuntimeError: populate() isn't reentrant
我遇到的问题是我尝试运行第二个Django应用程序,而我的apache配置中没有定义以下内容:
WSGIDaemonProcess ... WSGIProcessGroup ...
你可以运行一个django应用程序而无需定义它们,但是当两个应用程序产生冲突时。
升级到Django 1.7之后,我第一次发生了RuntimeError,但Django 1.8仍然存在。它通常是由Django应用程序引起的,该应用程序引发了一个错误,但是该错误被某种方式吞没了。
这是一种对我有效的解决方法。将其添加到你的wsgi.py中,并记录真正的错误:
import os import time import traceback import signal import sys from django.core.wsgi import get_wsgi_application try: application = get_wsgi_application() print 'WSGI without exception' except Exception: print 'handling WSGI exception' # Error loading applications if 'mod_wsgi' in sys.modules: traceback.print_exc() os.kill(os.getpid(), signal.SIGINT) time.sleep(2.5)