当前sdk版本:Linux v2.2.2,Mac v2.2.1
Linux:
sha256sum:
035117ebe98a07e78cda80c12893c0f2c236870008c4c3604afc14b2c84701e6
Mac:
支持的范围: Linux + python 3.7
pip install datatester_python_sdk-2.2.2-py3-none-any.whl
from client import client # 初始化ABTest分流客户端,请注意修改token参数 ab_client = client.AbClient( "token", meta_host="https://tab.volces.com", track_host="https://gator.volces.com" ) """ 参数: token: 获取方式详见接口描述-AbClient meta_host: 获取meta信息的地址,需要显示的指定为https://tab.volces.com,私有化用户注意修改 track_host: 事件上报地址,需要显示的指定为https://gator.volces.com,私有化用户注意修改 is_onpremise: 缺省值,sdk是否为私有化版本 user_info_handler: 缺省值,用户信息对象,进组不出组需要实现该handler max_workers: 缺省值,事件上报线程数,默认为4 """
与SaaS-云原生使用方式,仅初始化client时不同。SaaS-非云原生的老客户,无需指定meta_host与track_host
from client import client # 初始化ABTest分流客户端,请注意修改token参数 ab_client = client.AbClient("token") """ 参数: token: 获取方式详见接口描述-AbClient meta_host: 缺省值,获取meta信息的地址,默认值为SaaS-非云原生版本,私有化用户注意修改 track_host: 缺省值,事件上报地址,默认值为SaaS-非云原生版本,私有化用户注意修改 is_onpremise: 缺省值,sdk是否为私有化版本 user_info_handler: 缺省值,用户信息对象,进组不出组需要实现该handler max_workers: 缺省值,事件上报线程数,默认为4 """
与SaaS版本使用方式,仅初始化client时不同。私有化客户需要指定meta_host和track_host为部署时配置的域名。同时指定is_onpremise为True
from client import client # 初始化ABTest分流客户端,请注意修改token参数 # meta_host和track_host请修改为部署时配置的域名 ab_client = client.AbClient( "token" meta_host="", track_host="", is_onpremise=True ) """ 参数: token: 获取方式详见接口描述-AbClient meta_host: 私有化部署时配置的域名 track_host: 私有化部署时配置的域名 is_onpremise: 私有化环境需要显示的配置为True user_info_handler: 缺省值,用户信息对象,进组不出组需要实现该handler max_workers: 缺省值,事件上报线程数,默认为4 """
from client import client # 具体参数可以查看2.1 初始化Client ab_client = client.AbClient("token") # 定义分流时请求中携带的参数 attributes = { "state": "Nanjing", "likes_donuts": True, } # 推荐接口 # 根据variant key 获取分流后的实验配置 variable = ab_client.activate( "{variant_key}", "{decision_id}", "{track_id}", "{default_value}", attributes ) """ 参数: variant_key: 变体的key decision_id: 本地分流用户标识,不用于事件上报,请替换为客户的真实用户标识 track_id: 事件上报用户标识,用于事件上报,请替换为客户的真实用户标识 default_value: 当分流未命中时返回该值,根据业务需要使用,可传None attributes: 用户属性,仅用于分流,不随埋点上报,可参考https://www.volcengine.com/docs/6287/65826 """ # 各类型参数使用示例 # number # 对照组 = 123 实验组 = 456 if variable == 123: pass elif variable == 456: pass else: pass # 对照组 = 111.23 实验组 = 444.56 if variable == 111.23: pass elif variable == 444.56: pass else: pass # string # 对照组="aaa" 实验组="bbb" if variable == "aaa": pass elif variable == "bbb": pass else: pass # bool # 对照组=true 实验组=false if isinstance(variable, bool) and variable: pass else: pass # json # 对照组={"key":"value_a"} 实验组={"key":"value_b"} if not isinstance(variable, dict): return if variable.get("key", None) == "value_a": pass elif variable.get("key", None) == "value_b": pass else: pass
def __init__(self, token=None, meta_host=None, track_host=None, is_onpremise=False, user_info_handler=None,max_workers=4): """ 参数: token: 表明您的Tester应用。出于安全考虑,此处使用的token=appKey,而非appId。 meta_host: 设置获取meta信息的地址,SaaS-云原生/私有化用户注意修改 track_host: 设置事件上报地址,SaaS-云原生/私有化用户注意修改 is_onpremise: 缺省值,sdk是否为私有化版本 user_info_handler: 缺省值,用户信息对象,进组不出组需要实现该handler max_workers: 缺省值,事件上报线程数,默认为4 """
说明
1、请尽早初始化AbClient,以免影响您的分流服务和埋点上报服务。
2、每个应用有且仅有一个分流类AbClient,请确保它在所有线程中的唯一性。
在集团中接入一个应用后,您可以在集团相关页面查看应用的AppKey等信息,详情请参考:如何创建应用。
使用方式:
class UserInfoHandler: def query(decision_id): """ 参数: decision_id: 本地分流用户标识 返回值: 用户进组信息, 同create_or_update 的入参abInfo """ def create_or_update(decision_id, abInfo): """ 参数: decision_id: 本地分流用户标识 abInfo: 字符串类型,用户进组信息 返回值: 类型boolean,是否成功更新 """
def activate(self, variant_key, decision_id, track_id, default_value, attributes): """ 参数: variant_key: 变体的key decision_id: 本地分流用户标识 track_id: 事件上报用户标识 default_value: 变体默认值 attributes: 用户属性 返回值: 该函数返回命中版本的参数值,未命中时返回默认值 """
说明
1、含有“with_impression”字样的接口均会自动上报曝光事件。
2、事件上报接口请务必填写track_id字段,否则会导致上报失效。
参数类型为string,返回值为str "a" 参数类型为number,返回值为int 123(也可能是float 444.56) 参数类型为boolean,返回值为bool True 参数类型为json,返回值为dict {'key': 1}
def get_experiment_variant_name(self, experiment_id, decision_id, attributes): """ 参数: experiment_id: 指定分流的实验ID decision_id: 本地分流用户标识 attributes: 用户属性 返回值: 该函数返回用户命中的特定实验的版本名称, 如果用户不在实验中或者实验没有启动就返回None。 """
返回值为string "对照版本" / "实验版本1"
def get_experiment_configs(self, experiment_id, decision_id, attributes): """ 参数: experiment_id: 指定分流的实验ID decision_id: 本地分流用户标识 attributes: 用户属性 返回值: 该函数返回用户命中的某个实验的变体详情,通常仅能命中一个变体, 如果用户不在实验中或者实验没有启动就返回空的dict {}。 """
// dict {'age': {'val': 12, 'vid': '160528'}, 'configure': {'val': {'settings': 1}, 'vid': '160528'}, 'fromCN': {'val': True, 'vid': '160528'}, 'name': {'val': 'asd', 'vid': '160528'}}
def get_all_experiment_configs(self, decision_id, attributes): """ 参数: decision_id: 本地分流用户标识 attributes: 用户属性 Returns: 该函数返回用户命中的某个实验的变体详情,通常命多个变体, 如果用户不在实验中或者实验没有启动就返回空的dict {}。 """
与get_experiment_configs返回结构相同
{'go': {'val': 'v1', 'vid': '83580'}, 'age': {'val': 12, 'vid': '160528'}, 'configure': {'val': {'settings': 1}, 'vid': '160528'}, 'fromCN': {'val': True, 'vid': '160528'}, 'name': {'val': 'asd', 'vid': '160528'}}
def get_feature_configs(self, feature_id, decision_id, attributes): """ 参数: feature_id: feature的ID decision_id: 本地分流用户标识 attributes: 用户属性 返回值: 该函数返回用户命中某个feature的变体详情,通常仅能命中一个变体, 如果用户不在feature中,或者feature不可用,就返回None。 """
{'servergo': {'val': False, 'vid': '20100615'}}
def get_all_feature_configs(self, decision_id, attributes): """ 参数: decision_id: 本地分流用户标识 attributes: 用户属性 返回值: 该函数返回用户命中某个feature的变体详情,通常命中多个变体, 如果用户不在feature中,或者feature不可用,就返回None。 """
与get_feature_configs返回结构相同
{'servergo': {'val': False, 'vid': '20100615'}, 'python_key': {'val': 'bbb', 'vid': '20108187'}}
同接口:"get_experiment_variant_name"(同时上报曝光事件,需要传入track_id)
同接口:"get_experiment_configs"(同时上报曝光事件,需要传入track_id)
同接口:"get_feature_configs"(同时上报曝光事件,需要传入track_id)