我已经和一些工作中的人进行了讨论,我们无法得出结论。
我们面临一个难题–如何为不同的环境管理不同的配置值?

我们提出了一些选择,但是似乎没有一个让我们满意:
-单独的配置文件(即config.testconfig.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/

10-11 23:25
查看更多