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的日志记录 变量:
- mona_logging_level-根据python的日志将其设置为一个级别 常数(例如,10=调试)
- mona_print_logs-如果希望mona将日志打印到stdout,请将此设置为true。
特殊字段名
不要使用前缀为"mona"的字段名。Mona用这个模式 内部的。如果这样做,这些字段将在发出之前被丢弃 给莫娜,