在我要设置的__init__.py
文件中:
import os
app.config['SECRET_KEY'] = os.environ['MY_KEY']
但是我收到了错误:
raise KeyError(key)
KeyError: 'MY_KEY'
当我运行printenv
时,变量MY_KEY
就会出现。
同样在IDLE
我试着跑:
import os
print os.environ['MY_KEY']
我得到了正确的输出。
我使用以下内容在MY_KEY
设置了/etc/profile
export MY_KEY="1234example_secret_key"
我在更改restart
文件后profile
了我的电脑。
有人知道这个问题是什么吗?
感谢您的帮助。
答案 0 :(得分:0)
如果您在主管和/或gunicorn下运行您的流程(判断但您评论的是),您可以使用主管环境配置参数。
[program:my_app]
...
environment = MY_KEY="ABCD",MY_KEY2="EFG"
你也可以使用gunicorn --env flag或env config file param。
gunicorn -b 127.0.0.1:8000 --env MY_KEY=ABCD test:app
第二个选项的缺点是任何有权访问您机器的人都可以看到您的密钥。
最好的方法是使用app.config.from_envvar函数并将配置存储到计算机特定的配置设置位置(这可能在加密文件系统上)。在这种情况下,您的代码将如下所示:
app = Flask(__name__)
...
app.config.from_envvar('MACHINE_SPECIFIC_SETTINGS')
您的MACHINE_SPECIFIC_SETTINGS env变量可能指向具有MY_KEY值的文件。
MACHINE_SPECIFIC_SETTINGS=/path/to/config.py