在阅读exploreflask.com时,我了解到最佳做法是使用两个不同的配置文件,一个用于开发,一个用于生产.我不明白是否将密钥放在开发或生产配置中.
实例文件夹的私有性使其成为定义您不希望在版本控制中公开的键的理想选择.这些可能包括您应用的密钥或第三方API密钥.
我想不应该分享密钥.我应该将密钥放在开发配置还是生产配置中,还是应该为每个配置设置不同的密钥?
将密钥放置在开发配置中,该配置将提交给存储库。这对于开发人员很方便,因为他们不必生成一个就可以开始运行该应用程序。在生产环境中,请使用具有唯一密钥的生产环境配置(永远不会提交回购协议)。生产配置应覆盖开发配置。
app = Flask(__name__, instance_relative_config=True)
# default value during development
app.secret_key = 'dev'
# overridden if this file exists in the instance folder
app.config.from_pyfile('config.py', silent=True)
Run Code Online (Sandbox Code Playgroud)
如果您无法在生产环境中(例如在Heroku上)添加私有文件,则另一种选择是使用环境变量。如果设置了变量,它将覆盖默认值。
app.secret_key = os.environ.get('SECRET_KEY', 'dev')
Run Code Online (Sandbox Code Playgroud)