ip.*_*ip. 30 python apache django
当我尝试在生产中加载我的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
Run Code Online (Sandbox Code Playgroud)
Dir*_*ler 33
升级到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)
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅modwsgi上的此主题.
最后我遇到的问题是我试图运行第二个Django应用程序并且没有在我的apache配置中定义以下内容:
WSGIDaemonProcess ...
WSGIProcessGroup ...
Run Code Online (Sandbox Code Playgroud)
刚刚了解到你可以在没有定义它们的情况下运行单个django应用程序,但是当它们两者产生冲突时.