python project load config from yaml and environment.
Project description
Abir--Python项目配置方案 yaml/environ
安装
pip install abir
快速上手
django project
- 在
settings.py中添加
import abir
# other settings
abir.load() # at the end of settings.py
- 在项目根文件夹下添加
config.yaml
添加后的项目结构如下:
├── project
│ ├── project
│ | ├── __init__.py
│ | ├── asgi.py
│ | ├── wsgi.py
│ | ├── urls.py
│ | ├── settings.py
│ ├── manange.py
│ ├── config.yaml # 添加到根下
在yaml中添加对应的配置项
# settings 中已配置,只希望修改部分配置项时,使用 dot 查询并修改:
DATABASES.default.NAME: 'db_name'
DATABASES.default.HOST: 'dh_host' # 未配置时,会添加配置项
DATABASES.default.PORT: 'port'
DATABASES.default.USER: 'db_user_name'
DATABASES.default.PASSWORD: 'db_password'
# settings中无配置,或已配置,但希望全部替换,不使用 dot 查询:
CACHE:
default:
BACKEND: 'django_redis.cache.RedisCache'
LOCATION: 'redis://127.0.0.1:6379/1'
OPTIONS:
CLIENT_CLASS: 'django_redis.client.DefaultClient'
LANGUAGE_CODE: 'zh-CN'
USE_TZ: true
ALLOWED_HOSTS:
- *
⚠️ dot.将会查询settings.py,并更新查询路径下的值。
- 启动服务。
python manmage.py runserver
# or wsgi
其他python项目
假设项目结构如下:
├── project
│ ├── packagges
│ ├── modules
……
-
添加config_module.py (module名称可自定义)
如下添加代码
import abir abir.load(base_dir=BASE_DIR, conf_module='conf_module') # 如果config_module不在根下,输入完整查询路径即可,如:project.packageA.moduleB # confi_module 也可以是任何可设置property的对象:getattr and setattr
-
添加config.yaml
添加后的项目结构如下:
├── project │ ├── config_module.py │ ├── config.yaml # 添加到根下
-
执行应用,即可获取配置
environment 通过环境变量来进行配置
⚠️ 环境变量拥有最高优先级:当yaml/settings中存在配置,且环境变量中也存在,优先取环境变量的配置值,即:environ > yaml > settings(当load()在conf_module末尾调用时)
前缀
abir通过前缀 ABIR_捕获环境变量。
1. 字符串类型
ABIR_LANGUAGE_CODE=es-us
2. 其他类型
abir读取环境变量时,会识别 :定义,当定义为 :json ,将运行 json.loads进行值转换,因此可以通过赋值环境变量为json-string的方式,来满足非字符串类型的配置
ABIR_LANGUAGE_CODE=zh-CN
ABIR_USE_TZ:json=false
ABIR_TIMEOUT:json=20
ABIR_BLACK_UIDS:json=[101,39,847,11]
ABIR_LIFETIME:json={"days": 1, "key": "some-key"} # 注意 json-string 与 前端书写json的区别。
以上配置,将会被abir解读为:
LANGUAGE_CODE='zh-CN'
USE_TZ=False
TIMEOUT=20
BLACK_UIDS=[101,39,847,11]
LIFETIME={'days': 1, 'key': 'some-key'}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file abir-0.1.4.tar.gz.
File metadata
- Download URL: abir-0.1.4.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.9.6 Darwin/21.2.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5155a3906df61943f1894769d18ef9a02b4444ea6472f544ad7ae3b7c72f6968
|
|
| MD5 |
9262d3c8b08e40569a046cdd5b4274e6
|
|
| BLAKE2b-256 |
9e3ac999d61e211346f7a8ac43eac4109155300dcd797a7bab67c6629a3bfc6e
|
File details
Details for the file abir-0.1.4-py3-none-any.whl.
File metadata
- Download URL: abir-0.1.4-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.9.6 Darwin/21.2.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a67263f20b3365550f055af56a6e6ad6de1bdc1efdf2807c45575234ee74c86c
|
|
| MD5 |
76f2a1e377345c3e4a43304648d9ed34
|
|
| BLAKE2b-256 |
561b436db6ac911bc1df3d8a131d6f4a02988fc9e22cf9d3548e52e6bc204975
|