python mona工具的客户端代码

mona-client的Python项目详细描述


python客户端

安装

$pip安装mona客户端

环境变量

mona使用了几个您需要设置的环境变量,以便 按预期工作:

Mona_主机-从Mona获取的Mona服务器的IP地址。 Mona_端口-上述地址的端口。 Mona_用户ID-我们为您提供的唯一用户ID。

快速入门和示例

  • 如上所述安装
  • 如上所述设置环境变量
  • 客户的仪器代码如下所示
from mona_client import client

# Only call once,
# Add parameteres (host, port, ...) on this call if not already set through env vars.
client.init_client()

...

with client.new_mona_context(ARC_class="MY_COOL_ALGORITHM_NAME"):
    ...
    client.export({"foo": "bar"})
    ...

弧、子弧、kapi和尺寸

您发送给mona的所有信息都是使用"export()"函数发送的。你可以 通过此函数发送任何JSON可序列化dict。通过发送的所有字段 出口被视为(原始)kapis或(原始)尺寸。

kapi代表关键算法性能指标。这些都是数据 与算法的执行方式相关。例如 子组件的置信度得分,或从 具体算法。

维度都是与分割kapi值相关的元数据。例如, 最终用户统计信息、客户/用户ID或数据源ID。

我们称导出的数据为"原始",因为有时我们不直接使用这些数据, 但从中生成实际的kapi/维度(例如,当查看平均值时 随着时间的推移,作为kapi的价值。

当您在整个代码中将数据导出到mona时,mona将其聚合到 服务器到名为arc的结构。arc代表算法运行上下文。各 arc描述了整个算法运行。可以创建任意多个弧 在您的代码中,但通常,一次代码运行应该对应于 单弧。为了告诉mona所有导出都应该属于同一个弧,您 必须初始化新上下文。这通常在代码中的一个地方完成,其中 开始新的运行,使用:

with client.new_mona_context(arc_class="MY_COOL_ALGORITHM_NAME"):

将"类"分配给上下文。这告诉mona哪些弧描述了 同样的算法,因此允许mona比较它们,分割它们并找到 相关见解。

如果算法中有逻辑上可分离的部分,则可以初始化 子上下文使用:

with client.new_mona_sub_context(arc_class="MY_COOL_SUB_COMPONENT_NAME"):

覆盖导出时间戳

使用export函数时,会自动将"export timestamp"添加到 导出的消息。在某些情况下,需要用 给定的时间戳(例如,批量导出历史数据时)。什么时候? 使用给定的时间戳导出,使用导出功能并发送导出 时间戳(以秒为单位)作为参数。 例如:

client.export({"foo": "bar"}, 1552903200.0)

并发性

mona将arc的id保存为一个特殊的变量,它是线程和 给格林莱特。这意味着,如果启动一个新线程/greenlet,默认情况下 新线程的上下文将为空。

这通常是预取行为,因为新线程通常意味着新的 接收到请求(在服务器上)或算法的全新运行。

如果你想在新的线程上继续使用相同的上下文, 只需使用mona_thread.py下的子类monathread。这个班需要 注意将完整的上下文id传输到新启动的线程。

from mona_client import client
from mona_client.mona_thread import MonaThread

def threaded_function():
    print(client.get_full_context_id() == main_context)

with client.new_mona_context(arc_class="threaded_algorithm_name"):
    global main_context
    main_context = client.get_full_context_id()
    MonaThread(target=threaded_function).start()  # Prints "True"

测试客户端代码

客户端的测试是使用pytest框架编写的,因此为了运行 测试(假设您的环境中安装了pytest和pytest mock),您只需 需要在外壳上键入"pytest"。

正在将新版本上载到pypi

下面要做的主要参考是: https://packaging.python.org/tutorials/packaging projects/

  • 使用您的Mona电子邮件在PYPI上注册:https://pypi.org/" rel="nofollow">https://pypi.org/
  • 请将您添加为合作者
  • 如果不安装ed,安装绳线:$python3-m pip install--用户--升级绳线
  • 在setup.py下更改版本号
  • 如果需要新的依赖项,请将其添加到"install_requires"下的setup.py下
  • 如果未安装,请安装生成工具:$python3-m pip install--user--upgrade setuptools wheel
  • 构建新版本:$python3 setup.py sdist bdist_wheel
  • 上载新版本(可以将"*"更改为实际版本):$python-m tween upload dist/*

配置和大红色按钮

如果您想为mona设置配置,可以填充一个简单的json 配置文件。默认配置见mona_client_config.json 文件使用。目前只有一个配置选项,即 红色按钮"-禁用所有"配置,设置为真时, 完全禁用所有mona活动(不再导出和上下文初始化)。

Mona侦听环境变量下配置文件的更改 "Mona_客户端配置文件"。所以如果你想在跑步时禁用Mona,只要 在配置文件中将"disable_all"从"false"更改为"true",mona将 自动更新。

如果不自己设置mona_client_config_文件,mona将使用默认值 配置文件位于mona_client/config/mona_client_config.json上。如果 已启用日志记录,Mona将在启动时注销此文件的完整地址。 然后,可以在mona处于 运行.

另一个快速禁用所有mona活动的选项是设置 将所有环境变量禁用为truthy值。

日志记录

Mona正在使用自己的名为"Mona Logger"的记录器。您可以在 只需调用 ’’ logging.getlogger("mona logger") ’’ 然后根据需要设置处理程序和格式化程序。

您还可以使用两个不同的环境配置mona的日志记录 变量:

  1. mona_logging_level-根据python的日志将其设置为一个级别 常数(例如,10=调试)
  2. mona_print_logs-如果希望mona将日志打印到stdout,请将此设置为true。

特殊字段名

不要使用前缀为"mona"的字段名。Mona用这个模式 内部的。如果这样做,这些字段将在发出之前被丢弃 给莫娜,

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

推荐PyPI第三方库


热门话题
使用jaxb2annotateplugin和XJC工具的java自定义注释   java组织。xeustechnologies。jcl无法加载WstxInputFactory类   java JUnit在格式化字符串上比较失败   java Bukkit配置部分getKeys   如何关闭Java流?   java Struts2正则表达式配置   链式事务注释的java奇怪行为   java在两个JButton之间使用变量   java签署APK时内容会发生什么变化?   java LWJGL:Slick:3D世界中的绘图字体   如何分解Java数组?   在Java MySql中处理多个过滤器   java如何在Firebase数据库中跳过初始OnChildaded事件触发   java如何在PreviewView中使用CameraX?   在子类#中重写父类后访问父类原始方法的java已解决   java找不到类型的属性   游戏框架游戏!框架+Java