跳转到主要内容

配置缓慢应用于客户端

项目描述

slowroll

假设你想推出一个功能开关,或者选择金丝雀版本。在某处放置一个json配置,决定如何对你的用户进行哈希处理,并使用SlowrollConfig

from slowroll import SlowrollConfig

sc = SlowrollConfig("https://example.com/config.json", "app_features")
if sc.get_value("features", "install_to_opt_foo", socket.gethostname()):
    ...

这个配置看起来像这样

{
    "features": {
        "install_to_opt_foo": {
            "end_time": "2025-01-01 00:00Z",
            "duration": "14d",
            "stable": false,
            "new": true,
            "early_adopters": ["canary-host"],
        }
    }
}

请注意,“稳定”和“新”的值可以是任何有效的json。这里它们是布尔值,但也可以是表示Python项目版本的字符串。`start_time`没有明确指定,但由持续时间计算得出。

对HTTP服务器有一些限制,即它 必须 使用默认实现提供etags,但你可以提供自己的实现,该实现接受一个不透明的URL和一个不透明的值,你可以使用它来存储任何etag样式的元数据。

与semver一样,在达到1.0之前,我们不提供兼容性保证。API和配置格式都预计会发生变化。

可扩展性

  • 如果我想要将配置存储在zookeeper中呢?当然,提供自定义回调,该回调返回您知道的最新版本。

未来工作

  • 能够局部锁定一个值(旧值或新值)
  • 使用requests会话的示例
  • 重试/回退
  • _pct值的更多测试
  • 配置验证器
  • 数字值的插值
  • 正则表达式early_adopters
  • 倒计时回滚

许可证

slowroll版权所有 Tim Hatch,并使用MIT许可证授权。我在此以开源许可证向您提供代码。这是我的个人仓库;您从我那里获得的代码许可证来自我,而不是来自我的雇主。有关详细信息,请参阅LICENSE文件。

项目详情


下载文件

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

源代码分发

slowroll-0.0.1.tar.gz (9.5 kB 查看哈希值)

上传时间 源代码

构建分发

slowroll-0.0.1-py3-none-any.whl (8.1 kB 查看哈希值)

上传时间 Python 3

由以下支持