首先,我看到所有SO线程都与error populate() isn't reentrant
的问题有关,但我面临的问题是不同的。
我想先清楚的事情:
- 我的Django应用程序在IIS服务器上完美运行,只有我的应用程序在
INSTALLED_APPS
of项目的settings.py
中注册。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'MyDjangoWebApp.app',]
- 当我在
INSTALLED_APPS
项目的settings.py
中添加新应用程序时,它在Django Local Server中完美运行(由Pycharm创建和托管的E.g服务器)
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Busisoft_Document_Extraction_Web.app',
// Newly added app which I installed through PIP
'widget_tweaks']
但是当我从IIS服务器托管同一个项目时,它给了我
Error occurred while reading WSGI handler:
Traceback (most recent call last):
File "c:\server\MyDjangoWebApp\wfastcgi.py", line 791, in main
env, handler = read_wsgi_handler(response.physical_path)
File "c:\server\MyDjangoWebApp\wfastcgi.py", line 633, in
read_wsgi_handler
handler = get_wsgi_handler(os.getenv("WSGI_HANDLER"))
File "c:\server\MyDjangoWebApp\wfastcgi.py", line 605, in
get_wsgi_handler
handler = handler()
File "c:\server\MyDjangoWebApp\venv\lib\site-
packages\django\core\wsgi.py", line 12, in get_wsgi_application
django.setup(set_prefix=False)
File "c:\server\MyDjangoWebApp\venv\lib\site-
packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "c:\server\MyDjangoWebApp\venv\lib\site-
packages\django\apps\registry.py", line 81, in populate
raise RuntimeError("populate() isn't reentrant")
RuntimeError: populate() isn't reentrant
StdOut:
StdErr:
有趣的是,如果我删除额外的应用程序IIS完美。
我的web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="DjangoIISHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\server\MyDjangoWebApp\venv\Scripts\python.exe|c:\server\MyDjangoWebApp\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<add key="PYTHONPATH" value="c:\server\MyDjangoWebApp" />
<add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
<add key="WSGI_LOG" value="c:\server\MyDjangoWebApp\wfastcgi.log" />
<add key="DJANGO_SETTINGS_MODULE" value="Busisoft_Document_Extraction_Web.settings" />
<add key="WSGI_RESTART_FILE_REGEX" value=".*((\.py)|(\.config))$" />
</appSettings>
我的系统配置
我过去有类似的问题,它是在ubuntu服务器上。请检查视图文件中的导入。如果导入是相对导入的(即从.models导入MyModel),则在文件顶部添加以下行。
from __future__ import absolute_import
删除pycache并重启服务。