apache - 运行时错误 : populate() isn't reentrant on CentOS 7 | django 1. 9 | python 3

标签 apache python-3.x mod-wsgi centos7 django-1.9

我正在 Intranet 环境中部署 django 应用程序。我已经设置了一个测试服务器,一切都很好(在打破我的头脑修复错误之后)。

这一次,我设置了生产服务器并配置了所有内容后,我收到错误 500,这是httpd/logs/error_log:

回溯

[Thu Oct 27 09:44:15.480662 2016] [:error] [pid 15250] [remote 10.105.40.106:200] mod_wsgi (pid=15250): Target WSGI script '/home/rortega/smce/smce/wsgi.py' cannot be loaded as Python module.
[Thu Oct 27 09:44:15.480706 2016] [:error] [pid 15250] [remote 10.105.40.106:200] mod_wsgi (pid=15250): Exception occurred processing WSGI script '/home/rortega/smce/smce/wsgi.py'.
[Thu Oct 27 09:44:15.480736 2016] [:error] [pid 15250] [remote 10.105.40.106:200] Traceback (most recent call last):
[Thu Oct 27 09:44:15.480764 2016] [:error] [pid 15250] [remote 10.105.40.106:200]   File "/home/rortega/smce/smce/wsgi.py", line 16, in <module>
[Thu Oct 27 09:44:15.480805 2016] [:error] [pid 15250] [remote 10.105.40.106:200]     application = get_wsgi_application()
[Thu Oct 27 09:44:15.480823 2016] [:error] [pid 15250] [remote 10.105.40.106:200]   File "/home/rortega/smce_env/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
[Thu Oct 27 09:44:15.480852 2016] [:error] [pid 15250] [remote 10.105.40.106:200]     django.setup()
[Thu Oct 27 09:44:15.480868 2016] [:error] [pid 15250] [remote 10.105.40.106:200]   File "/home/rortega/smce_env/lib/python3.5/site-packages/django/__init__.py", line 18, in setup
[Thu Oct 27 09:44:15.480892 2016] [:error] [pid 15250] [remote 10.105.40.106:200]     apps.populate(settings.INSTALLED_APPS)
[Thu Oct 27 09:44:15.480908 2016] [:error] [pid 15250] [remote 10.105.40.106:200]   File "/home/rortega/smce_env/lib/python3.5/site-packages/django/apps/registry.py", line 78, in populate
[Thu Oct 27 09:44:15.480932 2016] [:error] [pid 15250] [remote 10.105.40.106:200]     raise RuntimeError("populate() isn't reentrant")
[Thu Oct 27 09:44:15.480958 2016] [:error] [pid 15250] [remote 10.105.40.106:200] RuntimeError: populate() isn't reentrant
[Thu Oct 27 09:44:15.561544 2016] [:error] [pid 15250] [remote 10.105.40.106:54216] mod_wsgi (pid=15250): Target WSGI script '/home/rortega/smce/smce/wsgi.py' cannot be loaded as Python module.
[Thu Oct 27 09:44:15.561571 2016] [:error] [pid 15250] [remote 10.105.40.106:54216] mod_wsgi (pid=15250): Exception occurred processing WSGI script '/home/rortega/smce/smce/wsgi.py'.
[Thu Oct 27 09:44:15.561597 2016] [:error] [pid 15250] [remote 10.105.40.106:54216] Traceback (most recent call last):
[Thu Oct 27 09:44:15.561623 2016] [:error] [pid 15250] [remote 10.105.40.106:54216]   File "/home/rortega/smce/smce/wsgi.py", line 16, in <module>
[Thu Oct 27 09:44:15.561658 2016] [:error] [pid 15250] [remote 10.105.40.106:54216]     application = get_wsgi_application()
[Thu Oct 27 09:44:15.561675 2016] [:error] [pid 15250] [remote 10.105.40.106:54216]   File "/home/rortega/smce_env/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
[Thu Oct 27 09:44:15.561703 2016] [:error] [pid 15250] [remote 10.105.40.106:54216]     django.setup()
[Thu Oct 27 09:44:15.561719 2016] [:error] [pid 15250] [remote 10.105.40.106:54216]   File "/home/rortega/smce_env/lib/python3.5/site-packages/django/__init__.py", line 18, in setup
[Thu Oct 27 09:44:15.561743 2016] [:error] [pid 15250] [remote 10.105.40.106:54216]     apps.populate(settings.INSTALLED_APPS)
[Thu Oct 27 09:44:15.561774 2016] [:error] [pid 15250] [remote 10.105.40.106:54216]   File "/home/rortega/smce_env/lib/python3.5/site-packages/django/apps/registry.py", line 78, in populate
[Thu Oct 27 09:44:15.561800 2016] [:error] [pid 15250] [remote 10.105.40.106:54216]     raise RuntimeError("populate() isn't reentrant")
[Thu Oct 27 09:44:15.561824 2016] [:error] [pid 15250] [remote 10.105.40.106:54216] RuntimeError: populate() isn't reentrant


在检查功能之前我注意到的另一件事:

  • 执行makemigrations时,我的 4 个应用程序中只有一个模型文件进行了迁移,就像只有一个应用程序一样
  • python manage.py runserver 没有错误

最佳答案

RuntimeError: populate() isn't reentrant

根据我的经验,这通常意味着 Django 项目中的某个地方存在错误。可能很难找到。另外,不要忘记重新启动 apache。

When executing makemigrations, only one model file of my 4 apps made the migrations, like if there is only one app

尝试将 makemigrations 指向特定应用程序:

python manage.py makemigrations appname

不要忘记之后应用迁移:

python manage.py migrate

关于apache - 运行时错误 : populate() isn't reentrant on CentOS 7 | django 1. 9 | python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40289137/

相关文章:

apache - 如何在 xampp 上安装 apxs

PHP/MySQL - 无法获取 PHP 脚本以将数据放入 MySQL 数据库

python - 下载大约 15000 个 URL 的元内容 Python - 线程

python-3.x - 将列表字符串转换为 float 列表 [pandas]

django - 使用 DotCloud 使用 apache + mod_wsgi + postgresql + nginx + memchache 部署 Django 应用程序

python - Flask - 从守护进程收到的响应 header 被截断或过大

php - Apache 打开的文件太多 (24)

python - 使用 python 和 gevent 的 http 服务器(不使用 apache)

apache - 在本地运行多个网站 Apache PHP Ubuntu

python - 如何使用 Python docx 在 Word 中使用 'Total Row' 样式选项