分桶方法decide

云眼About 5 min

分桶方法decide

本主题概述了 Python SDK 的判定方法,这些方法可用于在云眼灰度实验中为用户返回标帜判定。

使用 Decide 方法返回用户的标帜决策。标帜决策包括标帜启用/禁用状态和标帜变体。

本页介绍以下决策方法:

有关可以为 Determined 方法设置的选项的详细信息,请参阅:

决定

版本

SDK 3.7 及更高版本

描述

返回用户的标帜键的决策结果。决策结果在 EyeofcloudDecision 对象中返回,并包含传递标帜规则所需的所有数据。

Decide 是 UserContext 对象的一种方法。有关详细信息,请参阅 EyeofcloudUserContext

有关返回的决策对象的详细信息,请参阅 EyeofcloudDecision

参数

下表描述了 Decide 方法的参数:

参数类型描述
flag_key字符串灰度标帜的键
选项(可选)数组Array of EyeofcloudDecideOption enums.请参阅下表。

返回

方法返回一个云眼决策对象。有关更多信息,请参阅云眼决策

如果该方法遇到严重错误(SDK 未就绪、标帜键无效等),则它会返回带有空变体键字段的决策,并使用错误消息填充“原因”字段(无论“包括原因”选项如何)。

示例决策

下面是调用 Decide 方法并访问返回的 EyeofcloudDecision 对象的示例:

Python

# create the user and decide which flag rule & variation they bucket into  
user = eyeofcloud.create_user_context("user123", {"logged_in":True}) 
decision = user.decide("product_sort")  

# Did the decision fail with a critical error? 
try:   
    variation_key = decision.variation_key 
except:   
    print("{} error: {}".format(decision, decision.reasons))   
    
# flag enabled state: 
enabled = decision.enabled  

# variable value: 
value1 =  decision.variables["sort_method"]  

# all variable values 
all_var_values = decision.variables  

# variation. if null, decision fail with a critical error 
variation_key = decision.variation_key  

# flag decision reasons 
reasons = decision.reasons  

# user for which the decision was made 
user_context = decision.user_context

副作用

如果启用了通知侦听器notification listener ,则调用此侦听器。

EyeofcloudDecide选项

下面的示例演示如何在任何Decide方法上单独设置选项,或在实例化云眼客户端时将其设置为全局默认值。

Python

from eyeofcloud import eyeofcloud 
from eyeofcloud.decision.eyeofcloud_decide_option import EyeofcloudDecideOption  

# set global default decide options when initializing the client 
eyeofcloud_client = eyeofcloud.Eyeofcloud(
    sdk_key = "<YOUR_SDK_KEY>",
    options = [EyeofcloudDecideOption.DISABLE_DECISION_EVENT])  
    
# set additional options in a decide call 
user = eyeofcloud.create_user_context("user123") 
decision = user.decide_all(
    options = [EyeofcloudDecideOption.ENABLED_FLAGS_ONLY,
                EyeofcloudDecideOption.IGNORE_USER_PROFILE_SERVICE])

下表显示了可在 Decide 方法上设置的选项的详细信息。

EyeofcloudDecideOption 枚举如果设置:
DecideOption.DISABLE_DECISION_EVENT防止访问者在收到变体时触发展示open in new window,这将禁止在“结果”页面上open in new window显示 Decide 方法的结果。 此设置可能是 Decision Event Dispatched 枚举在返回的EyeofcloudDecision对象或 DECIDE 通知侦听器有效负载。
DecideOption.ENABLED_FLAGS_ONLY仅返回已启用标志的决策。这仅适用于确定多个标志的方法(如 Decide All 方法)的有效选项。如果此选项无效,则忽略该选项。如果未设置此选项,则无论是否启用该标志,SDK 都会返回所有决策。
DecideOption.IGNORE_USER_PROFILE_SERVICE设置后,SDK 会绕过用户配置文件服务 (UPS)(查找和保存)进行决策。如果未设置此选项,UPS将覆盖受众定位、流量分配和实验互斥组。
DecideOption.INCLUDE_REASONS在 EyeofcloudDecision 对象的 Reasons 字段中返回日志消息。请注意,与信息或调试消息不同,无论此设置如何,始终返回严重错误消息。
DecideOption.EXCLUDE_VARIABLES从决策结果中排除标志变量值。使用此选项可通过跳过大型 JSON 变量来最大程度地减少返回的决策。

全部决定


返回用户的所有活动(未存档)标志的决策。

版本


SDK v3.7 及更高版本

描述


使用 Decide All 方法可返回用户的标志决策映射。

参数


下表描述了 Decide All 方法的参数:

参数类型描述
options(可选)数组EyeofcloudDecideOption 枚举的数组。请参阅确定参数

返回


Decide All 方法返回 EyeofcloudDecisions 的映射。有关详细信息,请参阅 EyeofcloudDecision

如果该方法的所有标志都失败(例如,SDK 未就绪或用户上下文无效),则返回空映射。如果该方法检测到特定标志的错误,则会在该标志的决策的“原因”字段中返回错误消息。

例子


下面是通过调用Decide All获取用户标志的示例:

Python

from Eyeofcloud.decision.Eyeofcloud_decide_option import EyeofcloudDecideOption   

# make decisions for all active (unarchived) flags in the project for a user 
decisions = user.decide_all()  

# or only for enabled flags   
decisions = user.decide_all([EyeofcloudDecideOption.ENABLED_FLAGS_ONLY])  
flag_keys = decisions.keys 
flag_decisions = decisions.values 
decision_for_flag_1 = decisions["flag_1"]

如果启用了此侦听器,则为每个决策调用DECISION通知侦听器

确定密钥


Decide For Keys 方法为用户做出指定标志键的决策。

版本


SDK v3.7 及更高版本

描述


获取特定标志键的标志决策图。

参数


下表描述了Decide For Keys方法的参数:

参数类型描述
Key数组字符串标志键的数组。
options(可选)数组EyeofcloudDecideOption 枚举的数组。请参阅 EyeofcloudDecideOption

返回


返回 EyeofcloudDecisions 的映射。有关详细信息,请参阅 EyeofcloudDecision

如果该方法的所有标志都失败(例如,SDK 未就绪或用户上下文无效),则返回空映射。如果该方法检测到特定标志的错误,则会在该标志的决策的“原因”字段中返回错误消息。


以下是获取用户指定标志的示例:

Python

from Eyeofcloud.decision.Eyeofcloud_decide_option import EyeofcloudDecideOption  
# make a decisions for specific flags if enabled 
decisions = user.decide_for_keys(["flag_1", "flag_2"], [EyeofcloudDecideOption.ENABLED_FLAGS_ONLY])  

decision_for_flag_1 = decisions["flag_1"] 
decision_for_flag_2 = decisions["flag_2"]

副作用


如果启用了此侦听器,则为每个决策调用DECISION通知侦听器

Last update:
Contributors: zhangweixue