kronos时间序列存储引擎的python客户机

pykronos的Python项目详细描述


#pykronos

因此,您可以在运行
python脚本时使用自述文件来了解它的工作原理。

pykronos有很多实用程序要处理
`datetime`对象。
``python
from pykronos.client import id_field
from pykronos.client import timestamp_field
from pykronos.client import kronosclient
from pykronos.client import resultorder
from pykronos.common.time importDateTime到Kronos时间
从DateTime导入DateTime
从DateTime导入TimeDelta
从DateUtil.tz导入TZUTC
````
创建客户端

使用正在运行的服务器的URL创建Kronos客户端。可选地
提供一个"namespace"来显式处理特定
命名空间中的事件。
`` python
kc=kronosclient('http://localhost:8151',namespace='kronos')
start=datetime.now(tz=tzutc())
````
非阻塞客户端

一个
后台线程将对数据进行批处理并将其发送到服务器。这对于在不能等待写入确认的机器上记录/度量收集非常有用。可选的"sleep\u block"参数,
默认值为"0.1",指定在批处理
到服务器之间等待的秒数。如果运行客户端的进程在刷新事件之前崩溃,则这些事件将丢失。
`` python
nonblocking=kronos client('http://localhost:8151',namespace='kronos',
blocking=false)
```
使用'put'命令插入事件

参数是一个
流名称的字典(例如,`yourcroduct.website.pageviews`),它是要插入到每个流的
json可编码字典的列表。
``python
kc.put(
{yourcroduct.website.pageviews':[
{source':'http://test.com',
'browser':{name':"firefox","version":26},
"pages":['page1.html,'page2.html']},
"yourproduct.website.clicks':[
{user':40,'num-clicks':7},
{user':42,'num-clicks':2},
})
````
每个事件都将在客户端上加上时间戳。如果添加
一个"timestamp"字段参数,则可以指定每个
事件发生的时间。
``python
可选的'u time=datetime'到'u kronos'时间(start+timedelta(seconds=5))
kc.put({yourproduct.website.clicks':[
{user':35,'num'clicks':10,timestamp_字段:可选的_time}})

````
检索事件

检索事件需要流名称、开始日期时间和结束日期时间。请注意,每个事件都会附加一个"id\u字段"和"timestamp\u字段"。"id_field"是一个uuid1样式的标识符
,其时间位来自时间戳。这允许事件id
按事件发生的时间大致排序,同时提供
两个事件同时发生时的确定性分层。
``python
events=kc.get('yourproduct.website.clicks',
start,
start+timedelta(minutes=10))
对于事件中的事件:
打印"接收的事件",事件
最后一个事件id=event[id_field]
````
```id_将"order=resultorder.descending"参数传递到
将此行为更改为"id\u field"的降序。
``python
events=kc.get('yourproduct.website.clicks',
start,
start+timedelta(minutes=10),
order=resultorder.descending)
对于事件中的事件:
打印"反向事件",事件
last_event_id=event[id_field]
````
使用
`limit`参数。
``python
events=kc.get('yourproduct.website.clicks',
start,
start+timedelta(minutes=10),
order=resultorder.descending,
limit=1)
对于事件中的事件:
打印"有限事件",事件
最后一个事件id=event[id\field]
````
``获取流的列表

若要查看此命名空间中可用的所有流,请使用"获取流"。
``python
对于kc中的流。获取流():
打印"found stream",stream
```
模式是从各个事件的
结构推断出来的。schema协议基于json schema
v4.
``python
response=kc.inferu schema('yourproduct.website.clicks')
print response['schema']
````
`删除事件

有时,我们会进行oossie,需要删除一些事件。
`delete`函数对要删除的开始时间戳和结束时间戳采用类似的参数。


注意:最常见的kronos用例是用于具有高吞吐量读取的以写为主的系统。因此,您可以想象大多数
后端将不会经过删除优化。在kronos
api中,没有任何东西天生就使得删除不起作用,但是我们可以想象,一些
后端会以
快速删除的代价来权衡优化它们的写和读路径。
``python
kc.delete('yourproduct.website.clicks',
start+timedelta(seconds=5),
start+timedelta(minutes=10))


events=kc.get('yourproduct.website.clicks',
start,
start+timedelta(minutes=10))
对于事件中的事件:
打印"已接收事件",事件
```

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

推荐PyPI第三方库


热门话题
java如何在windows上向doclet添加多个sourcepath?   java谷歌地图应用程序   java为以下场景创建正则表达式   Java文件通道异常   Java集合如何将文件对象列表转换为路径对象列表?   多线程生产者/消费者模型使用Java(同步),但始终运行同一线程   java如何为存储在ArrayList中的特定属性设置值?   java一次不能加载多个osm文件   使用java 8将map<String,map<Long,customeObject>>转换为list<customeObject>   java JDK包含哪些脚本语言解释器?   java为什么eclipse在这里生成语法错误?   多线程Javasocket异常:socket已关闭且值为空   java我想在Android活动中创建一个带有图像的可滚动文本列表。我应该用什么?   java实现编译时警告   java根据安卓 SQLite数据库中前一行的相同值递增特定值   java移动迭代器语句使代码可编译   java JVM终身/旧代已达到限制&服务器挂起   为什么我们不能在映射上使用迭代器(Java)?   xml如何映射JAXB中已有的JavaBean