Django在通过uWSGI运行时忽略环境变量

els*_*sar 8 django uwsgi

我有一个django网站,它使用环境变量DJANGO_MODE来决定使用哪些设置 - 开发或登台.环境变量在bashrc使用开发服务器运行应用程序时,一切正常.

但是当我使用app运行时uWSGI,它似乎没有注意到环境变量并使用默认(开发)设置而不是生产.

uWSGI在Emperor模式下运行,除了环境变量忽略之外,一切似乎都运行良好.是的,运行的用户uWSGIbashrcDJANGO_MODE设置的用户相同.

用于运行的命令uWSGI是 -

exec  uwsgi --emperor /etc/uwsgi/vassals --uid web_user --gid --web_user
Run Code Online (Sandbox Code Playgroud)

ini附庸的文件 -

[uwsgi]
processes = 2
socket = /tmp/uwsgi.sock
wsgi-file = /home/web_user/web/project_dir/project/wsgi.py
chdir = /home/web_user/web/project_dir
virtualenv = /home/web_user/.virtualenvs/production_env
logger = syslog
chmod-socket = 777
Run Code Online (Sandbox Code Playgroud)

rob*_*rto 10

它不能工作,因为bash读取bash配置文件.你必须在皇帝或附庸中设置var(第二个是更好的方法).只需添加

env=DJANGO_MODE=foobar
Run Code Online (Sandbox Code Playgroud)

到你的配置(不要使用空格).

  • 哦!我设置了带有空格的 env - `env = DJANGO_MODE = mode`,这导致了问题。 (2认同)