在django安装的应用程序中添加新应用程序会出现错误populate()不可重入IIS

问题描述 投票:0回答:1

首先,我看到所有SO线程都与error populate() isn't reentrant的问题有关,但我面临的问题是不同的。

我想先清楚的事情:

  1. 我的Django应用程序在IIS服务器上完美运行,只有我的应用程序在INSTALLED_APPSof项目的settings.py中注册。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',

'MyDjangoWebApp.app',]
  1. 当我在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>

我的系统配置

  1. Windows 10
  2. IIS服务器10
  3. Python 3.5(32位)
  4. Django 2.1.7
python django iis django-settings
1个回答
0
投票

我过去有类似的问题,它是在ubuntu服务器上。请检查视图文件中的导入。如果导入是相对导入的(即从.models导入MyModel),则在文件顶部添加以下行。

from __future__ import absolute_import

删除pycache并重启服务。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.