9个版本
0.2.9 | 2024年7月18日 |
---|---|
0.2.8 | 2024年4月1日 |
0.2.7 | 2024年3月26日 |
0.2.5 | 2023年3月29日 |
0.1.0 | 2023年2月20日 |
#59 在 数据库实现
每月 55 次下载
20KB
481 行
简介
特性标记不应该这么复杂。
Mr Flagly是一个用Rust编写的去中心化特性标记系统,为其他语言提供了绑定。
它不依赖于第三方服务,也不需要您部署服务或数据库来管理。
支持的特性标记定义来源
- URL
- JSON值
- 环境变量
Rust用法
设置您的标记服务
use mrflagly::service::{FlagService, FlagServiceOptions};
let flag_service = FlagService::new(FlagServiceOptions {
finder_type: mrflagly::service::types::FlagFinderType::URL,
url: "https://path/to/hosted/json/file",
refresh_interval: 600,
data: None,
env_var: None,
})
然后,检查特性标记
if flag_service.enabled("feature_x", false /* default value */, Some(HashMap::from([(String::from("user_id"), String::from("123")),])) /* optional context */) {
// do something
}
Python支持
import mrflagly
flag_service = mrflagly.FlagService(url="https://path/to/hosted/json/file")
if flag_service.enabled("feature_x", default=False, context={"foo": "bar"}):
# do something
FlagService构造函数参数
finder_type
: (NULL, URL, JSON, ENVVAR)url
: 下载特性标记json数据的URLrefresh_interval
: 检查特性标记数据端点的频率data
: 不是从URL托管特性标记数据,您可以提供json blobenv_var
: 在环境变量中提供特性标记数据
JSON格式
特性标记数据的JSON格式
{
"my_feature": {
"rollout": 100
},
"my_feature_with_variants": {
"rollout": 0,
"variants" {
"user_id": ["123"],
"company_id": ["123"]
}
}
}
示例:为特定客户激活
JSON配置数据
{
"feature": {
"rollout": 0,
"variants": {
"customer_id": ["123"]
}
}
}
用法
import mrflagly
import json
flag_service = mrflagly.FlagService(
data=json.dumps({"feature": {"rollout": 0, "variants": {"customer_id": ["123"]}}}))
if flag_service.enabled("feature_x", default=False, context={"customer_id": "123"}):
# do something
依赖关系
~12–23MB
~353K SLoC