python dynaconf 初步学习多环境environments(toml文件)

python dynaconf 初步学习多环境environments(toml文件)

最近由于测试环境与布署环境配置上的存在差别,老是手动改,实在麻烦,故尝试找下有没有合适的方案。初试dynaconf, 它在设计时候就考虑了多环境的问题。当前网上文章介绍的少,故在此记下初步使用的一些尝试:

读取多个toml文件

configs/setting.toml 随意

[java_server]
host = "192.168.0.2222"
port = 8089

configs/hello.toml 随意

world = "good start!"

conf.py 随意起

from dynaconf import Dynaconf

settings = Dynaconf(
    settings_files=['configs/settings.toml', 'configs/hello.toml'],
)
JAVA_IP = settings.java_server.host
test = settings.world
print(JAVA_IP, test)

隔离多个环境

configs/base.toml

[default]
DB_NAME = "mydb.db"
a_dict = { hello = "world" }
bbc = "bbc"

[java_server]
host = "192.168.0.2222"
port = 8089

configs/other.toml 随意名字

[other]
name = "other"

[java_server]
desc = "java服务器的配置说明(可以跨文件读)"

test.py 好好测一下

from dynaconf import Dynaconf

import os

# 如果不设置,默认是 os.environ["ENV_FOR_DYNACONF"] = "default"

settings = Dynaconf(
    root_path="configs",  # 也可以这里指定路径
    settings_files=["base.toml", "other.toml"],
    environments=True,
    load_dotenv=True,
)

settings.validators.validate()
print(settings.bbc)
# print(settings.host) 可以试一下,这里会报错
# print(settings.java_server.host)  # 可以试一下,这里会报错

# 设置环境变量,当前无法像之前一样使用,需要将 java_server 设成环境
os.environ["ENV_FOR_DYNACONF"] = "java_server"
settings.reload()  # 记得重新加载
print(settings.host)  # 这下可以用了
print(settings.bbc)  # bbc 在 default也可以用的哦
print(settings.desc)  # 跟文件在other.toml得到的

os.environ["ENV_FOR_DYNACONF"] = "other"
settings.reload()   # 记得重新加载
print(settings.name)
print(settings.bbc)  # 打印出abc, 因为default的bbc被other的bbc覆盖了

至此可以得出, environments=True,原来的首层的[xxx],已经成为了环境空间,而[default]则是一个特殊的,是一个可以被承继的基础环境。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值