跳转到主要内容

`konfetti` 为用Python编写的应用程序或库提供了配置的框架无关方式。

项目描述

codecov Build Version Python versions License

描述

konfetti 是一个Python配置管理库,简化了将您的应用程序配置为在公司基础设施上运行的过程。

此库将帮助您从Vault检索机密,管理对需要我们监控服务的设置(如Datadog和Sentry)的访问,并设置测试以评估应用程序的行为。

Konfetti通过懒加载管理应用程序的配置设置:它只调用和配置应用程序需要的内容,并在需要时进行。

主要优势

可配置的懒加载评估 - 您可以选择Konfetti评估应用程序配置的时间。

更快的测试执行 - 如果整个项目未使用,则无需评估整个项目的配置。

更快且灵活的测试 - 隔离应用程序的较小部分不再需要为每个测试执行完整设置。

与流行的Web应用程序框架集成 - Konfetti可以无缝与Django、Flask和Celery一起工作。

界面设计和功能深受decoupleDjangoenvparsedynaconf的启发。

快速入门

在Konfetti执行任务之前,您需要创建一个设置模块,然后告诉Konfetti该模块的位置。

1. 创建设置模块

请使用以下路径查找应用程序设置,适用于您的生产、本地或其他环境:app_name/settings/production.py

接下来,请查看下面的代码块,并在您的设置文件中复制相关部分。

> :warning: 变量名必须全部大写,其他变量将被忽略

> :warning: 如果您的应用程序需要Vault访问,则需要在设置模块中指定`VAULT_ADDR`和`VAULT_TOKEN`

# app_name/settings/production.py
from konfetti import env, vault

VAULT_ADDR = env("VAULT_ADDR")
VAULT_TOKEN = env("VAULT_TOKEN")

DEBUG = env("DEBUG", default=False)
DATABASE_URI = vault("path/to/db")

除了导入语句from konfetti import env, vault之外,您可以删除您不使用的功能设置。

例如,如果您不使用数据库,则可以删除变量DATABASE_URI。根据您的设置,它也可能被称为DB_URI或类似名称。

此外,如果您的应用程序不需要机密信息,则可以删除变量VAULT_ADDRVAULT_TOKEN

2. 配置访问点

# app_name/settings/__init__.py
from konfetti import Konfig, AsyncVaultBackend

config = Konfig(vault_backend=AsyncVaultBackend("/secret/team"))

在您的应用程序环境变量中,请添加KONFETTI_SETTINGS变量,并指定设置模块的路径。在上述代码块的情况下,它是

export KONFETTI_SETTINGS=app_name.settings.production

或者,访问点可以从对象、可导入的字符串、映射或JSON文件启动

对象

class TestSettings:
    VALUE = "secret"
config = Konfig.from_object(TestSettings, ...)

可导入的字符串

config = Konfig.from_object("path.to.settings", ...)

# If the config is in the same module
SECRET = vault("/path/to")["secret"]
config = Konfig.from_object(__name__, ...)

映射

config = Konfig.from_mapping({"SECRET": 42}, ...)

JSON

config = Konfig.from_json("/path/to.json")

用法

带有配置选项的设置模块/类不应直接访问,因为这些功能是在访问点级别实现的。

from app_name.settings import config

async def something():
    await config.DATABASE_URI  # asynchronously taken from Vault
    debug = config.DEBUG  # Usual sync access

文档

有关完整文档,请参阅https://konfetti.readthedocs.io/en/latest/

或者您可以在仓库中的docs/目录下查看。

Python支持

Konfetti支持Python 2.7、3.5、3.6、3.7和3.8

许可证

此项目的代码采用MIT许可证。通过向konfetti做出贡献,您同意您的贡献将根据其MIT许可证进行许可。

项目详情


下载文件

下载适合您的平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源代码发行版

此发布版没有源代码发行版文件。有关生成发行版存档的教程,请参阅生成发行版存档

构建发行版

konfetti-0.8.0-py2.py3-none-any.whl (26.0 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者