我有一个 Flask 应用程序,它根据生产环境变量和开发环境变量使用不同的数据库。我担心开发人员在运行本地 Flask 应用程序之前忘记设置 FLASK_ENV=development,然后突然对生产数据库进行更新。
我想到的唯一简单的解决方案是限制生产数据库仅接受来自生产服务器IP的请求,这样如果开发人员忘记设置环境变量,一切都会出错,但我想知道是否有更好的解决方案问题。
首先,最好将对生产数据库的访问限制为仅受信任的 IP。
正如您可以阅读的配置处理:开发/生产(Flask 文档) https://flask.palletsprojects.com/en/1.1.x/config/#development-production,您可以有多个配置并使用继承。
class Config(object):
DATABASE_URI = 'sqlite:///:memory:'
class ProductionConfig(Config):
DATABASE_URI = 'mysql://user@localhost/foo'
class DevelopmentConfig(Config):
pass
您可以随时加载安全的默认配置。只有设置了生产环境变量,才会加载真正的数据库配置。
另一种解决方案是使用实例文件夹(Flask 文档) https://flask.palletsprojects.com/en/1.1.x/config/#instance-folders that 不应该是git 存储库的一部分。
实例文件夹被设计为不受版本控制并且是特定于部署的。
因此,当您部署应用程序时,只需将生产配置添加到此实例文件夹中,没有人会在本地计算机上拥有产品配置。他们有一些示例,并在我上面给您的链接中很好地解释了如何使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)