事件批处理

云眼About 5 min

事件批处理

本主题介绍云眼灰度实验 Python SDK 如何使用事件处理器将展示次数和转化事件批处理到单个有效负载中,然后再将其发送到云眼。

云眼灰度实验 Python SDK 允许批处理事件,并包括用于设置最大批处理大小和刷新间隔超时的选项。事件批处理的好处意味着,对于相同数量的决策和转化事件,跟踪的网络流量更少。

默认情况下,在 Python SDK 3.3.0 中禁用事件批处理。请继续了解如何利用 Python SDK 中的事件批处理。

📘 注意

事件批处理适用于现成事件调度程序和自定义事件调度程序。

确保未将个人身份信息 (PII) 发送到云眼灰度实验。事件批处理过程不会从事件中删除 PII。

配置事件批处理

可以通过使用 .我们提供了两个主要选项来配置事件批处理:和 。可以在创建实例时传入这两个选项,也可以在创建 Eyeofcloud 客户端期间传递创建的实例。使用 时,事件将保留在队列中,直到:BatchEventProcessor``batch_size``flush_interval``BatchEventProcessor``BatchEventProcessor

  • 事件数达到定义的 .batch_size
  • 最旧的事件在队列中存在的时间超过了定义的 ,以秒为单位指定。然后刷新队列,并在单个网络请求中将所有排队的事件发送到 Eyeofcloud 功能实验。flush_interval
  • 收到新的数据文件修订版。仅当启用了实时数据文件更新时,才会发生这种情况。

Python

from eyeofcloud import eyeofcloud from eyeofcloud import event_dispatcher as eyeofcloud_event_dispatcher from eyeofcloud.event import event_processor # Set event dispatcher that the # You can reference your own implementation of event dispatcher here event_dispatcher = eyeofcloud_event_dispatcher.EventDispatcher # Create instance of BatchEventProcessor. # # In this example here we set batch size to 15 events # and flush interval to 50 seconds. # Setting start_on_init starts the consumer # thread to start receiving events. # # See table below for explanation of these # and other configuration options. batch_processor = event_processor.BatchEventProcessor( event_dispatcher, batch_size=15, flush_interval=50 start_on_init=True, ) # Create Eyeofcloud client and pass in instance # of BatchEventProcessor to enable batching. eyeofcloud_client = eyeofcloud.Eyeofcloud( sdk_key='<Your SDK Key here>', datafile='<Your datafile here>', event_processor=batch_processor )

下表定义了可用于配置 BatchEventProcessor 的这些选项和其他选项。

名字

默认值

描述

event_dispatcher

无默认值。必需参数。

用于管理网络调用的事件处理程序。

提供一种接收 URL 和参数并调度请求的方法。dispatch_event

记录器可选

NoOpLogger

用于记录问题的记录器实现。

flush_interval_可选_

30

事件在刷新之前可以存在于队列中的最长持续时间(以秒为单位)。

batch_size_可选_

10

队列中要保留的最大事件数。达到此数字后,将刷新所有排队的事件并将其发送到云眼灰度实验。

start_on_init_可选_

布尔值,如果设置为 true,则在初始化 .

默认情况下,该值为 False,因此使用者线程尚未准备好接收任何事件。始终可以通过调用 BatchEventProcessor``start``BatchEventProcessor

timeout_interval_可选_

5

表示加入使用者线程之前的时间间隔(以秒为单位)的数字。

event_queue_可选_

六.移动.队列.队列

允许在调度事件之前累积事件的组件。

notification_center_可选_

通知中心

的实例。

默认情况下,将创建一个实例。eyeofcloud.notification_center.NotificationCenter``notification_center.NotificationCenter

更多信息,请参见初始化SDK

📘 注意

最大有效负载大小为 3.5 MB。如果生成的批处理有效负载超过此限制,请求将被拒绝,并显示 400 响应代码 .Bad Request Error

副作用

下表列出了使用此类可能触发的其他云眼灰度实验功能。

功能性

描述

日志事件

每当事件处理器生成一批事件时,将使用事件工厂创建一个 LogEvent 对象。
它包含一批转换和决策事件。
此对象将使用提供的事件调度程序进行调度,并且还将发送给通知订阅者。

通知侦听器

如果订阅了LOG_EVENT通知侦听器,则刷新将调用此侦听器。

注册日志事件侦听器

注册日志事件通知侦听器

Python

def on_log_event(): pass eyeofcloud_client.notification_center.add_notification_listener(enums.NotificationTypes.LOG_EVENT, on_log_event)

日志事件

LogEvent 对象是使用 EventFactoryopen in new window 创建的。它表示我们发送到云眼灰度实验后端的一批决策和转换事件。

对象

类型

描述

http_verb 必需(非空)

字符串

调度日志事件时要使用的 HTTP 谓词。它可以是获取或发布。

网址为必填(非空)

字符串

要将日志事件调度到的 URL。

参数必需(非空)

字典

事件批处理。它包含有关批处理的每个事件的所有信息。包括包含用户事件的访问者列表。

字典

请求标头

在应用程序退出时停止批处理事件处理器

如果启用事件批处理,则必须在退出**之前调用“**stop”方法。这可确保尽快刷新排队的事件,以避免数据丢失。 batch_processor.stop()

警告

由于 BatchEventProcessor 维护排队事件的缓冲区,因此必须在关闭应用程序之前调用 BatchEventProcessor 实例。stop()

方法

描述

停止()

停止并刷新事件队列。

注意:我们建议将此方法连接到正在运行的进程的终止信号。

Last update:
Contributors: “zhangweixue”