云眼分桶结果 EyeofcloudDecision
About 3 min
云眼分桶结果 EyeofcloudDecision
本文介绍 Python SDK 的 EyeofcloudDecision 对象,该对象是从云眼灰度发布(特性标帜)AB实验中的 decide 方法返回的。
版本
SDK v3.7 及更高版本
对象模型
下面显示了云眼决策对象的对象模型。
Python
class EyeofcloudDecision(object):
def __init__(self, variation_key=None, enabled=None,
variables=None, rule_key=None, flag_key=None, user_context=None, reasons=None):
self.variation_key = variation_key
self.enabled = enabled or False
self.variables = variables or {}
self.rule_key = rule_key
self.flag_key = flag_key
self.user_context = user_context
self.reasons = reasons or []
def as_json(self):
return {
'variation_key': self.variation_key,
'enabled': self.enabled,
'variables': self.variables,
'rule_key': self.rule_key,
'flag_key': self.flag_key,
'user_context': self.user_context.as_json(),
'reasons': self.reasons
}
下表描述了云眼决策对象的字段:
田 | 类型 | 描述 |
---|---|---|
启用 | 布尔 | 该标帜是否已启用。 云眼灰度发布(特性标帜)AB实验从不为此字段返回 null;当由于错误而无法做出决定时,它返回 false。 |
变量 | Map | 所有标帜变量的键值对。当没有为标帜定义变量或 SDK 无法获取变量时,此字段将返回空映射。当 SDK 无法获取决策的变量时,“原因”字段将包含错误消息,而不考虑“包括原因”选项。 |
variation_key | 字符串(可为空) | 当 SDK 无法做出决定时,此字段将返回 null,并且“原因”字段包含日志消息(如果设置了“包括原因”选项)。 在旧项目中,存在一种边缘情况:1. 原因字段中没有消息和 2.变体键字段中的空值表示找不到变体(例如,因为标帜是转出的一部分)。 |
rule_key | 字符串(可为空) | 用户为此决策存储到的标帜规则的键。 当有效的规则键不可用时,将返回实验键的副本。 如果未找到有效的规则键和实验键,则返回 null。 |
flag_key | 字符串 | 做出决定的标帜的密钥。 |
user_context | 云眼用户上下文 | 与对 Decide 方法的调用关联的用户。 |
原因 | 数组 | 按时间顺序排列的相关错误和日志消息的数组。云眼返回此字段中的消息: - 在做出决策时检测到错误时。 - 当在决定选项中启用决策原因时 - 没有消息时为空数组。 |
有关详细信息,请参阅以下部分。
原因
返回的决策对象在“原因”字段中包含错误和日志消息。
错误原因
为了与其他决策结果保持一致,Eyeofcloud Feature Experimentation 返回具有 null 字段的决策,而不是引发错误或异常。
严重错误始终包含在返回的决策对象的原因字段中,而不考虑在 Decide 方法上设置的包含原因选项。
错误 | 可能的原因 |
---|---|
零variation_key | - Eyeofcloud功能试验SDK尚未正确配置 - 用户上下文无效 - 未找到密钥的标志 |
空variables | - EyeofcloudJSON的变量无效 - 键的变量值无效或类型错误 |
日志原因
Eyeofcloud Feature Experimentation 按记录的顺序在返回的 EyeofcloudDecision 对象的原因字段中收集日志消息。
如果在 Decide 方法上设置了“包含原因”选项,则仅将以下类型的日志消息包含在“原因”字段中:
- 与根据受众或属性对用户进行分桶相关的日志消息。
- 根据流量百分比记录与对用户进行分桶相关的消息。
例子
有关返回的 decision 对象的示例,请参阅 Decide 方法。