我已经和一些工作中的人进行了讨论,我们无法得出结论。
我们面临一个难题–如何为不同的环境管理不同的配置值?
我们提出了一些选择,但是似乎没有一个让我们满意:
-单独的配置文件(即config.test
,config.prod
等),并且具有指向所选文件的文件(例如,位于~/env
的文件)或指向该文件的环境变量。
-使用单个数据库存储所有配置(您可以根据环境查询它并获取相应的配置值)
-部署时创建配置文件(使用Atlassian Bamboo等CI / CD系统)
哪个使用更广泛?有没有更好的办法?
配置文件是否应该与其余代码一起保存在git存储库中?
我们的系统是用python(2.7和3)编写的
最佳答案
您可以将所有这些配置放在单个配置文件config.py中。
class Base():
DEBUG = False
TESTING = False
class DevelopmentConfig(Base):
DEBUG = True
DEVELOPMENT = True
DATABASE_URI = "mysql+mysqldb://root:root@localhost/demo"
class TestingConfig(Base):
DEBUG = False
TESTING = True
DATABASE_URI = "mysql+mysqldb://root:root@test_server_host_name/demo_test"
class ProductionConfig(Base):
DEBUG = False
TESTING = False
DATABASE_URI = "mysql+mysqldb://root:root@prod_host_name/demo_prod"
在shell上设置环境变量像
APP_SETTINGS = config.DevelopmentConfig
在主应用程序app.py中,加载此环境变量(以Flask应用程序为例)
from flask import Flask
import os
app = Flask(__name__)
app.config.from_object(os.environ['APP_SETTINGS'])
我希望这可以帮助
关于python - 管理不同环境的配置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50610832/