uWSGI + Django:ImportError:没有名为“ wsgi”的模块

时间:2018-07-04 09:05:25

标签: python django uwsgi

我的项目结构:

/srv/venv是virtualenv的所在地(包含binlib之类的目录)

/srv/venv/webapp是Django应用程序的主目录,其中包含文件wsgi.py

我的.ini文件:

[uwsgi]
plugins = python
chdir = /srv/venv/webapp
module = wsgi
home = /srv/venv/
master = true
processes = 10
socket = /tmp/srv.sock
chmod-socket = 666
vacuum = true
buffer-size = 32767
die-on-term = true

启动时,uWSGI说:

Wed Jul  4 10:58:40 2018 - chdir() to /srv/venv/webapp
Wed Jul  4 10:58:40 2018 - Set PythonHome to /srv/venv/
ImportError: No module named 'wsgi'

每个请求最终以:

Wed Jul  4 10:28:45 2018 - --- no python application found, check your startup logs for errors ---
[pid: 643|app: -1|req: -1/1] 192.168.33.1 () {42 vars in 653 bytes} [Wed Jul  4 10:28:45 2018] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers in 83 bytes (0 switches on core 0)

当我执行cd /srv/venv/webapp,运行python并键入import wsgi时,没有错误发生。

任何想法可能有什么问题吗?

更新:当我从virtualenv(/srv/venv/bin/uwsgi)安装并运行uWSGI时,一切正常。但是为什么它不能与系统范围的uWSGI一起使用?

UPDATE2:我写了一个systemd服务来在启动时运行uWSGI,但它又无法正常工作-同样的错误。我手动执行systemctl restart uwsgi后,它开始工作。添加10秒的延迟并不能解决问题。我没办法了。

1 个答案:

答案 0 :(得分:1)

假设您wsgi.py看起来像这样:

import os
from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
application = get_wsgi_application()

您的uwsgi.ini需要更新为:

module = wsgi:application

您也可以将其添加到uwsgi.ini中以指定您的虚拟环境:

virtualenv = /path/to/you/virtualenv