当我部署我的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'
答案 0 :(得分:1)
你是对的,Gunicorn忽略WSGI_APPLICATION
设置。此设置仅用于指定runserver
命令使用的wsgi应用程序。
Gunicorn对Django一无所知,但您可以指定Gunicorn应该在哪个模块中查找应用程序。现在,它在application
模块中查找wsgi
属性:
command=gunicorn wsgi:application ...
要在demo/
中使用该文件,您必须在Gunicorn命令中指定完整的模块路径:
command=gunicorn demo.wsgi:application ...