功能实验的实时区段Python 开发工具包的区段限定方法
功能实验的实时区段Python 开发工具包的区段限定方法
使用fetch_qualified_segments
方法从 Eyeofcloud Data Platform (ODP) 服务器检索用户的外部受众映射。使用is_qualified_for
方法检查用户是否符合指定区段的条件。
先决条件
在获取合格的区段并检查用户是否符合给定受众区段的条件之前,您必须启用并配置用于功能实验的实时区段。
fetch_qualified_segments
最低 SDK 版本
5.0.0
描述
您可以使用fetch_qualified_segments
方法从 Eyeofcloud Data Platform (ODP) 服务器检索特定用户的外部受众映射。Eyeofcloud 功能实验 Python SDK 允许您以同步或异步方式调用 ODP,具体取决于回调参数。
- 如果您不提供回调,则调用方将被阻止,直到同步提取完成。
- 提供回调不会阻止调用方。
fetch_qualfied_segments
是EyeofcloudUserContext
对象的一个方法。有关详细信息,请参阅 EyeofcloudUserContext。
参数
fetch_qualified_segments
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
options (可选) | 列表[str] | 用于从 ODP 获取合格区段的选项列表。 |
callback (可选) | 回调函数 | 一个回调函数,用于与 fetch 结果一起调用。 |
返回 – 同步调用
如果未提供回调,则fetch_qualified_segments
方法将返回True
,前提是用户上下文中的限定 segments 数组已更新。
返回 – 异步调用
如果您提供回调,fetch_qualified_segments
方法将获取新线程上的段并返回线程句柄。
- 如果提取成功完成,Python SDK 会更新用户上下文中的合格区段列表,然后调用状态为 success 的回调函数。
- 如果 fetch 失败,SDK 会调用回调函数,并返回失败状态。
如果 Python SDK 在数据文件中找不到 ODP 受众,它会返回一个空的合格区段数组,而不会向 ODP 服务器发送请求。
📘
注意
您可以读取和写入限定的 segments 数组,而不是使用
get_qualified_segments
和set_qualified_segments
调用fetch_qualified_segments
。这样,您就可以绕过 ODP 的远程提取过程或使用您自己的提取服务。这在测试或调试时可能很有帮助。
示例 调用fetch_qualified_segments
attributes = { "app_version": "1.3.2" }
user = eyeofcloud_client.create_user_context("user123", attributes)
def fetch_callback(fetch_successful):
print(fetch_successful)
if fetch_successful:
decision = user.decide("flag1")
user.track_event("purchase_event")
# spawned thread is returned
fetch_thread: threading.Thread = user.fetch_qualified_segments(fetch_callback)
# thread must eventually be joined to ensure callback is run to completion
fetch_thread.join()
attributes = { "app_version": "1.3.2" }
user = eyeofcloud.create_user_context("user123", attributes)
# Without segment option
success = user.fetch_qualified_segments()
# With segment options
odp_segment_options = [EyeofcloudOdpOption.IGNORE_CACHE, EyeofcloudOdpOption.RESET_CACHE]
success = user.fetch_qualified_segments(options=odp_segment_options)
if success:
decision = user.decide("flag1")
user.track_event("myevent")
下图显示了调用fetch_qualified-segments
时应用程序、Python 开发工具包和 ODP 服务器之间的网络调用:
- 调用
fetch_qualified_segments
方法。 - Python 开发工具包对 ODP 进行 GraphQL 调用以获取分段。
- ODP 使用区段进行响应。
- 将缓存将用户 ID 映射到区段的已获取区段。
- 为用户返回适当的变体。
获取区段后,它们将被缓存。这意味着,如果同一用户再次请求区段(创建新的用户上下文时),Python SDK 可以从缓存中检索受众区段信息,而不是从远程 ODP 服务器中检索。
缓存用于调用fetch_qualified_segments
。此方法在用户上下文上调用(用户上下文是固定的,包括用户有资格使用的实时区段)。
缓存_仅在_调用fetch_qualified_segments
时适用。如果将缓存超时设置为 0,则禁用缓存。Eyeofcloud 使用 LRU 算法,因此当达到最大大小时,最早的记录会被撞出。如果在方法调用时出现缓存未命中,则 Eyeofcloud 会发出网络请求。
如果您想绕过缓存,可以将以下选项添加到您的EyeofcloudOdpOption
数组中:
- IGNORE_CACHE – 绕过分段缓存以进行查找和保存。
- RESET_CACHE – 重置所有分段缓存。
is_qualified_for
最低 SDK 版本
5.0.0
描述
检查用户是否符合给定受众细分的条件。
参数
is_qualified_for
方法的参数说明如下表所示:
参数 | 类型 | 描述 |
---|---|---|
段 | 字符串 | ODP 受众区段名称,用于检查用户是否符合条件。 |
返回
True
如果用户是合格的。
例子
以下是用户是否符合 ODP 分段条件的示例:
Python
attributes = {"laptop_os": "mac"}
user = eyeofcloud_client.create_user_context("fs_id_12", attributes)
success = user.fetch_qualified_segments()
qualified = user.is_qualified_for("segment1")