在Django中正确使用wsgi.py

时间:2015-03-25 17:24:44

标签: python django wsgi gunicorn

当我部署我的Django网站时,我对wsgi.py文件有点困惑,以及它与Gunicorn在制作中的本地使用情况。

本地我有这个文件结构。

demo/
    __init__.py
    settings.py
    urls.py
    wsgi.py
manage.py

Settings.py具有以下设置... WSGI_APPLICATION = 'demo.wsgi.application'

然而,一旦我部署了在Gunicorn上运行的应用程序,我得到一个错误,说它无法找到wsgi.py文件,为了让它工作,我必须再次创建文件......

demo/
    __init__.py
    settings.py
    urls.py
    wsgi.py
manage.py
wsgi.py

这现在有效,但它告诉我,Gunicorn忽略了Djangos设置文件WSGI_APPLICATION中的demo/settings.py设置,对吧?如果是这样,Gunicorn在哪里获得自己对wsgi.py文件位置的引用以及本地的不同之处?

这是我的Gunicorn设置,重要的是......

[program:gunicorn_process]
command=gunicorn wsgi:application -c /srv/test/gunicorn.conf.py
directory=/srv/test
user=root
autostart=true
autorestart=true
redirect_stderr=true

gunicorn.conf.py

bind = "127.0.0.1:8001"
workers = 3
worker_class = 'gevent'

1 个答案:

答案 0 :(得分:1)

你是对的,Gunicorn忽略WSGI_APPLICATION设置。此设置仅用于指定runserver命令使用的wsgi应用程序。

Gunicorn对Django一无所知,但您可以指定Gunicorn应该在哪个模块中查找应用程序。现在,它在application模块中查找wsgi属性:

command=gunicorn wsgi:application ...

要在demo/中使用该文件,您必须在Gunicorn命令中指定完整的模块路径:

command=gunicorn demo.wsgi:application ...