WSGI模块和Django设置位置

时间:2016-09-10 10:24:39

标签: python django wsgi uwsgi

我正在使用Django和uWSGI并尝试组织我的Web服务器配置文件,如下所示:

/proj/
    web_config/
        docker-compose.py
        ...
        prod/
            nginx.conf
            wsgi.py
            uwsgi_params
            uwsgi.ini
            ...
    app/
        __init__.py
        settings.py

我的问题是我不知道如何从我的WSGI模块引用最终的django设置模块:

uwsgi.ini

[uwsgi]
# ...    
module = wsgi
env = DJANGO_SETTINGS_MODULE=(../../)app.settings # <- Problem here

wsgi.py

import os

from django.core.wsgi import get_wsgi_application

#                                               v- Or problem here -v
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "(../../)app.settings")
application = get_wsgi_application()

有没有办法指向正确的app.settings
没有将wsgi.py放入/proj//proj/app

1 个答案:

答案 0 :(得分:1)

在这种情况下,要引用django设置,您需要做的只是从uwsgi.ini/proj/目录的chdir。现在使用wsgi.py uWSGI设置加载app/文件(您可以将其保存在module子目录中,但不包含任何设置)并将DJANGO_SETTINGS_MODULE设置为{ {1}},没有任何其他内容(仅在app.settings文件中设置它就足够了。)

它应如下所示(如果您已将wsgi.py移回wsgi.py):

uwsgi.ini:

app/

wsgi.py

[uwsgi]
# ...
chdir = /proj/
module = app.wsgi

如果您不希望(由于某种原因)将import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings") application = get_wsgi_application() 文件保留在wsgi.py,则app/应该有:

uwsgi.py

但是[uwsgi] # ... chdir = /proj/ module = web_config.prod.wsgi web_config应该是正确的python模块(在python 2中,它们必须包含prod文件)。 __init__.py的内容不会更改。