用于Optimizely X完整堆栈的Python sdk。

optimizely-sdk的Python项目详细描述


Optimizely X Full Stack是产品开发团队的A/B测试和功能管理。在任何应用中进行实验。让路线图上的每一个功能都成为学习的机会。有关更多信息,请访问https://www.optimizely.com/products/full-stack/" rel="nofollow">https://www.optimizely.com/products/full-stack/,或访问我们的文档https://developers.optimizely.com/x/solutions/sdks/reference/index.html?language=python.optimizelypython开发包

pypi version构建状态coverage statusapache 2.0

这个存储库包含了正式的python sdk,可用于优化 完全堆叠并优化卷展栏。

优化完整堆栈是A/B测试和功能标记管理 产品开发团队。在任何应用中进行实验。使每一个 在你的路线图上有一个学习的机会。了解更多 https://www.optimizely.com/platform/full-stack/,或查看完整 栈 文档

optimizely rollouts是开发团队的免费功能标志。容易地 在没有代码部署的任何应用程序中推出和回滚功能。 降低路线图上每个功能的风险。了解更多 https://www.optimizely.com/rollouts/,或查看卷展栏 文档

开始

安装sdk

sdk可以通过pypi

要安装:

pip install optimizely-sdk

功能管理访问

在 仪表板,请联系您的Optimizely Account Executive。

使用sdk

您可以通过三种方式初始化优化实例:使用数据文件、通过提供sdk密钥或通过提供 基本配置管理器。 每种方法如下所述。

  1. 使用数据文件优化初始化。此数据文件将用作 在优化实例的整个生命周期中projectconfig的源。

    optimizely.Optimizely(
      datafile
    )
    
  2. 通过提供"sdk_密钥"进行优化初始化。这将 初始化发出http get请求的pollingconfigmanager url(使用您提供的sdk密钥和 默认数据文件cdn url模板)以异步下载 项目数据文件定期更新projectconfig 接收到新的数据文件。硬编码数据文件也可以是 与将要使用的sdk_密钥一起提供 在任何更新之前。

    optimizely.Optimizely(
      sdk_key='put_your_sdk_key_here'
    )
    

    如果提供数据文件,初始化将如下所示:

    optimizely.Optimizely(
      datafile=datafile,
      sdk_key='put_your_sdk_key_here'
    )
    
  3. 通过提供实现 基本配置管理器。 您可以根据需要使用我们的轮询配置管理器。

    optimizely.Optimizely(
      config_manager=custom_config_manager
    )
    
  4. < > >

    轮询配置管理器

    轮询配置管理器异步轮询 通过使http 请求。

    polling_config_manager = PollingConfigManager(
        sdk_key=None,
        datafile=None, 
        update_interval=None, 
        url=None, 
        url_template=None,
        logger=None, 
        error_handler=None, 
        notification_center=None,
        skip_json_validation=False 
    )
    

    注意:必须提供sdk密钥或url。如果 两者都提供,URL优先。

    sdk_keysdk_key用于组成出站 http请求到优化的cdn上的默认数据文件位置。

    数据文件您可以提供初始数据文件来引导 projectconfigmanager以便可以立即使用它。最初的 如果http连接不能 建立。初始数据文件将在第一个 数据文件轮询成功。

    更新间隔更新间隔用于指定固定的 数据文件的连续http请求之间的延迟(秒)。

    URL模板可以提供带有占位符的字符串 所以这个模板和提供的sdk密钥是 用于形成目标URL。

    您也可以提供自己的记录器、错误处理程序或 通知中心。

    高级配置

    可以设置以下属性来覆盖默认值 [pollingconfigmanager]{.title ref}的配置。

    属性名称默认值说明


    更新间隔5分钟修复了数据文件获取之间的延迟 sdk_key none优化项目sdk key url none url重写用于为优化数据文件指定自定义http源的位置 url_模板https://cdn.optimizely.com/datafiles/{sdk_key}.json按sdk key参数化的数据文件url 数据文件无初始数据文件,通常来自本地缓存源

    每当new数据文件 获取并更新项目配置。订阅这些 通知,使用:

    通知中心.添加通知侦听器(notificationtypes.optimizely配置更新,更新回调)

    有关更多详细信息,请参阅optimizely完整堆栈文档了解如何设置第一个python项目和使用sdk。

    开发

    构建sdk

    使用以下命令使用pip构建并安装sdk:

    pip install -e .
    

    单元测试

    运行所有测试

    要安装测试依赖项,请使用 安装命令:

    pip install -e .[test]
    

    您可以使用以下命令运行所有单元测试:

    nosetests
    

    在文件中运行所有测试

    要在特定测试文件下运行所有测试,可以使用以下命令命令:

    pip install optimizely-sdk
    
    0

    例如,要在test_event下运行所有测试,命令将是:

    pip install optimizely-sdk
    
    1

    在一个类下运行所有测试

    要在特定类别的测试下运行所有测试,可以使用 以下命令:

    pip install optimizely-sdk
    
    2

    例如,要在test_event.eventtest下运行所有测试,命令 将是:

    pip install optimizely-sdk
    
    3

    运行单个测试

    要运行单个测试,可以使用以下命令:

    pip install optimizely-sdk
    
    4

    例如,要运行test_event.eventtest.test_dispatch,命令 将是:

    pip install optimizely-sdk
    
    5

    贡献

    请参见贡献。

    优化python sdk变更日志

    3.2.0

    2019年8月27日

    新功能:

    • 通过轮询配置管理器添加了对自动数据文件管理的支持:
      • pollingconfigmanager是baseconfigmanager的一个实现。
      • 用户可以提供一个数据文件或sdk密钥(sdk_密钥)或两者中的一个来优化。基于此,sdk将使用静态配置管理器或pollingconf轮询conf。igmanager。有关更多说明,请参阅自述文件
      • 在对托管数据文件发出http请求之前,可以向pollingconfigmanager提供初始数据文件以引导。
      • 对数据文件的请求是在一个单独的线程中发出的,并以固定的延迟进行计划。
      • 可以通过添加优化配置更新通知侦听器订阅配置更新。
    • 优化地引入了get_feature_变量。(191

    已弃用:

    • notificationcenter.clear_notifications自本版本起不推荐使用。请使用通知中心。清除"通知"侦听器。(182
    • notificationcenter.clear_all_notifications自本版本起不推荐使用。请使用通知中心。清除"所有通知"侦听器。(182

    3.2.0b1

    2019年7月26日

    新功能:

    • 通过轮询配置管理器添加了对自动数据文件管理的支持:
      • pollingconfigmanager是baseconfigmanager的一个实现。
      • 用户可以提供一个数据文件或sdk密钥(sdk_密钥)或两者中的一个来优化。基于此,sdk将使用静态配置管理器或pollingconf轮询conf。igmanager。有关更多说明,请参阅自述文件
      • 初始数据文件可以提供给pollingconfigmanager,以便在对托管数据文件发出http请求之前引导。
      • 对数据文件的请求是在一个单独的线程中发出的,并以固定的延迟进行计划。
      • 可以通过添加优化配置更新通知侦听器订阅配置更新。
    • 优化地引入了get_feature_变量。(191

    已弃用:

    • notificationcenter.clear_notifications自本版本起不推荐使用。请使用通知中心。清除"通知"侦听器。(182
    • notificationcenter.clear_all_notifications自本版本起不推荐使用。请使用通知中心。清除"所有通知"侦听器。(182

    3.1.0

    2019年5月3日

    新功能:

    • 引入了决策通知侦听器以能够记录:
      • 为实验中激活的用户分配变体。
      • 为用户提供功能访问。
      • 为用户提供功能变量值。

    错误修复:

    • 当featureenabled属性为false时,功能变量api现在返回默认变量值。(171

    已弃用:

    • 自此版本起,不推荐使用激活通知侦听器。建议使用新的决策通知侦听器。激活通知侦听器将在下一个主要版本中删除。

    3.0.0

    2019年3月1日

    3.0版本改进了事件跟踪并支持更多的受众 定位功能。

    新功能:

    • 事件跟踪:
      • track方法现在无条件地分派其转换事件,而不首先确定用户是否是使用该事件的已知实验的目标。这可能会增加出站网络流量。
      • 在优化结果中,3.0sdk发送的转换事件不会显式地命名当前针对用户的实验和变体。相反,转换会自动归因于用户以前看到的变化,只要这些变化是通过3.0 sdk或其他能够自动归因的客户端提供的,只要我们的后端实际接收到这些变化的印象事件。
      • 总之,这允许您跟踪转换事件并将其属性化为变体,即使您不知道用户的所有属性值,即使用户的属性值或实验的配置已更改,从而用户不再受实验的影响。因此,您可能会看到先前检测的事件的转换率增加。如果这是不需要的,您可以在升级到3.0 sdk后重置先前运行的实验的结果。-这还允许您将事件属性设置为与帐户中其他优化项目不同的变体,即使这些实验不出现在同一个数据文件中。
      • 请注意,对于优化结果中的结果分段,只要后端实际接收到相关事件,则来自一个事件的用户属性值将自动应用于同一会话中的所有其他事件。此行为已就位,不受3.0版本的影响。
    • 支持所有类型的属性值,而不仅仅是字符串。
      • 所有值都传递给通知侦听器。
      • 字符串、布尔值和有效数字将传递给事件分派器nd可用于优化结果分割。有效数字是一个或多个有限浮点数。在包含范围内的整数[-2_3,2_3]。
      • 字符串、布尔值和有效数字与观众条件相关。
    • 在观众条件下支持其他匹配者:
      • 存在一个匹配器,如果用户对目标用户属性具有非空值,则匹配器通过,否则将失败。
      • 一个子字符串匹配器,用于解析用户是否具有目标属性的字符串值。
        • gt(大于)和lt(小于)匹配器,用于确定用户是否具有目标属性的有效数值。有效数字是一个或多个有限浮点数。在包含范围内的整数[-2_3,2_3]。
        • 原来的(精确的)匹配器现在可以用来定位布尔值和有效数字,而不仅仅是字符串。
    • 支持A/B测试、功能测试和功能卷展栏,其访问群体使用"和""而不是"运算符组合,而不仅仅是"或"运算符。
    • 数据文件版本兼容性检查:如果给定的数据文件版本大于4,则sdk将保持未初始化状态(即,将无法正常激活实验和功能)。
    • 更新了拉取请求模板和提交消息准则。

    中断更改:

    • 由3.0 sdk发送的转换事件不会显式命名当前针对用户的实验和变体,因此这些事件在原始事件数据导出中不分配。您必须使用新的结果导出来确定事件所属的变化。
    • 以前,通知侦听器只被赋予字符串值的用户属性,因为只有字符串可以被传递到各种方法调用中。现在已经不是这样了。可以传递非字符串属性值,如果传递,则必须更新通知侦听器,以便能够接收传入的任何值。

    错误修复:

    • 当负目标属性的值丢失、为空或格式错误时,实验和功能将不再激活。
      • 当无法找到目标用户属性的合法值时,访问群体条件(除了新的存在匹配器)将不再解析为false。结果仍为null(未知)。因此,否定这样一个条件的访问群体(使用"not"运算符)不能再解析为true,除非条件树中有一个无关的分支本身解析为true
    • 如果请求解析为http 4xx或5xx,则更新默认事件分派器以记录错误。(140
    • 现在,所有方法都验证用户ID是否为字符串,以及实验键、功能键、功能变量键和事件键是否为非空字符串。

    2.1.1

    2018年8月21日

    • 修正:使用track时使用事件记录所有实验的转换(136)。

    2.1.0

    2018年7月2日

    • 引入了对bot过滤的支持(121)。
    • 彻底检查日志记录以使用标准的python日志记录(\123)。

    2.0.1

    2018年6月19日

    • 修正:当功能被禁用时,发送功能测试的印象事件(\128)。

    2.0.0

    2018年4月12日

    这个主要版本引入了用于功能管理的api。它也 介绍一些打破下面列出的更改。

    新功能

    • 引入了是否启用功能的API,以确定是否向用户显示功能。
    pip install optimizely-sdk
    
    6
    • 用户所有已启用的功能都可以通过调用:
    pip install optimizely-sdk
    
    7
    • 引入特征变量以配置或参数化特征。有四种变量类型:stringintegerdoubleboolean
    pip install optimizely-sdk
    
    8

    中断更改

    • 已删除将revenue value作为独立参数的trackapi。收入值应作为事件标记dict中的一个条目传入。收入标记的键是revenue,传入的值将作为计算结果的值进行优化处理。
    pip install optimizely-sdk
    
    9

    2.0.0b1

    2018年3月29日

    此测试版引入了用于功能管理的api。它也 介绍下面列出的一些突破性变化。

    新功能

    • 引入了是否启用功能的API,以确定是否向用户显示功能。
    pip install optimizely-sdk
    
    6
    • 用户所有已启用的功能都可以通过调用:
    pip install optimizely-sdk
    
    7
    • 引入特征变量以配置或参数化特征。有四种变量类型:stringintegerdoubleboolean
    pip install optimizely-sdk
    
    8

    中断更改

    • 已删除将revenue value作为独立参数的trackapi。收入值应作为事件标记dict中的一个条目传入。收入标记的键是revenue,传入的值将作为计算结果的值进行优化处理。
    pip install optimizely-sdk
    
    9

    1.4.0

    • 增加了对IP匿名化的支持。
    • 增加了对通知侦听器的支持。
    • 增加了对Bucketing ID的支持。
    • 更新了mmh3以处理Windows 10上的安装失败。

    1.3.0

    • 引入了对强制屈曲的支持。
    • 引入了对数字度量的支持。
    • 已更新事件生成器以支持新端点。

    1.2.1

    • 已删除旧的功能标志分析。

    1.2.0

    • 添加了用户配置文件服务。

    1.1.1

    • 已更新数据文件解析,以便能够处理其他字段。
    • 不推荐的经典项目支持。

    1.1.0

    • 在日志事件中包括数据文件修订信息。
    • 添加事件标记以跟踪API,允许用户传入事件元数据。
    • 已弃用track方法中的event_value参数。应该使用event_标记传入事件值。
    • 已将事件日志端点更新到logx.optimizely.com。

    1.0.0

    • 在Optimizely X中引入了对完整堆栈项目的支持。与以前的版本相比没有中断性的更改。
    • 在实例化和核心方法中引入了更优雅的异常处理。
    • 更新了白名单,在观众匹配之前。

    0.1.3

    • 增加了对v2端点和数据文件的支持。
    • 更新了Dispatch_事件以使用事件对象而不是URL和参数。事件对象由四个属性组成:url(表示要将事件发送到的url的字符串)、params(表示要为事件设置的params的dict)、http_verb(表示"get"或"post"之一)和headers(要一起发送的header值)。
    • 修正了跟踪分组实验事件的问题。

    0.1.2

    • 更新了需求文件。

    0.1.1

    • 引入了跳过json模式验证的选项。

    0.1.0

    • python sdk的beta版,用于服务器端测试。

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


热门话题
java如何处理CannotCreateTransactionException   安卓如何通过TensorFlowEnferenceInterface提供布尔占位符。JAVA   java是一个系统。出来默认情况下println线程安全?   java关于同步的重要性   java非法启动表达式/尚未对编码充满信心欢迎帮助   安卓为什么XML和Java中的ImageView测量不同?   Android乘以双精度整数[java]   java如何将下一个数组项设置为变量的新值?   java编译ikvmc pwswiftcoreXXXX。jar作为clr。动态链接库   java测试没有单元测试调用的私有方法   在java中如何划分重复的正则表达式模式?   java活动不刷新onCreate()中的布局   Java用户输入nextLine()不等待输入   oracle11g用java编写ORACLE BLOB文件   mysql如何在Java程序中使用Hibernate?   java ADF从托管bean调用有界taskflow