Dor*_*nar 5 python configuration continuous-integration configuration-files continuous-deployment
我和工作中的一些人进行了讨论,我们无法得出结论。
我们遇到了两难境地——您如何为不同的环境管理不同的配置值?
我们提出了一些选项,但似乎没有一个让我们满意:
- 单独的配置文件(即config.test,config.prod等),并有一个文件指向选定的文件(~/env例如at ),或指向一个环境变量它。
- 使用单个 DB 来存储所有配置(您在环境中查询它并获取相应的配置值)
- 在部署时创建配置文件(使用像 Atlassian Bamboo 这样的 CI/CD 系统)
哪个是更广泛使用的选项?有没有更好的办法?
配置文件是否应该与其余代码一起保存在 git 存储库中?我们的系统是用 python 编写的(2.7 和 3)
小智 7
您可以将所有这些配置放在单个配置文件 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"
Run Code Online (Sandbox Code Playgroud)
在外壳上设置环境变量,如
APP_SETTINGS = config.DevelopmentConfig
在您的主应用程序 app.py 中,加载此环境变量(以烧瓶应用程序为例)
from flask import Flask
import os
app = Flask(__name__)
app.config.from_object(os.environ['APP_SETTINGS'])
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助
我们最终使用了与此类似的方法。我们有一个基本设置文件和环境特定文件,它们只是从基本文件 base.py 导入所有内容:
SAMPLE_CONFIG_VARIABLE = SAMPLE_CONFIG_VALUE
Run Code Online (Sandbox Code Playgroud)
产品.py:
from base.py import *
Run Code Online (Sandbox Code Playgroud)
因此,当从配置访问值时,我们所要做的就是读取环境变量并创建与其对应的文件。
| 归档时间: |
|
| 查看次数: |
9233 次 |
| 最近记录: |