为什么gunicorn没有看到相应的环境变量?

时间:2016-03-06 22:35:38

标签: python django gunicorn

在我的生产服务器上,我在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

提前感谢您的耐心等待!

1 个答案:

答案 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等。