在我的生产服务器上,我在virtualenv内部和外部设置了环境变量(仅因为我不理解这个问题),包括我设置为{{1的变量HELLO_WORLD_PROD
}}。在python解释器中,无论是在我的venv里面还是外面,'1'
都会返回os.environ.get('HELLO_WORLD_PROD') == '1'
。在我的设置文件夹中,我有:
True
prod.py和dev.py都从base.py和base import os
if os.environ.get('HELLO_WORLD_PROD') == '1':
from hello_world.settings.prod import * # noqa
else:
from hello_world.settings.dev import * # noqa
继承,并且只在dev.py中继承DEBUG = False
。
但是,当我通过浏览器触发错误时,我看到了调试页面。
我正在使用nginx和gunicorn。为什么我的应用程序导入了错误的设置文件?
你可以看到我的gunicorn conf here
提前感谢您的耐心等待!
答案 0 :(得分:2)
我正在使用sudo service gunicorn start
来操纵炮弹。 The problem is service strips all environment variables but TERM, PATH and LANG。要修复它,在我的gunicorn.conf中的exec
行中,我使用--env标记添加了环境变量,如exec env/bin/gunicorn --env HELLO_WORLD_PROD=1 --env DB_PASSWORD=secret
等。