通用TimeSeries数据库Python客户端

universal-tsdb的Python项目详细描述


通用tsdb

通用时间序列数据库Python客户机(InfluxDB,Warp10,…)

简介

这个项目旨在抽象你的时间序列后端,使你的代码尽可能不可知。在

一些例子:

  • 概念证明
  • 开发的早期阶段(当您不确定应该使用哪个平台时)
  • ETL(提取转换加载),用于加载步骤

:警告:当前代码只提供摄取功能(写入指向后端的点)。在

快速启动

安装

$ pip install universal-tsdb
^{pr2}$

流入DB

fromuniversal_tsdbimportClient,Ingesterbackend=Client('influx','http://localhost:8086',database='metrics',backend_username='user',backend_password='passwd')series=Ingester(backend)series.append(1585934895000,measurement='mes',field1=42.0)series.append(1585934896000,measurement='mes',tags={'tag1':'value1'},field1=43.4,field2='value')series.commit()

上面的代码将基于InfluxDB line协议生成一个数据有效载荷 并通过HTTP(S)请求发送。在

POST /write?db=metrics&u=user&p=passwd HTTP/1.1
Host: localhost:8086

mes field1=42.0 1585934895000000000
mes,tag1=value1 field1=43.4 field2="value" 1585934896000000000

翘曲10<3>
fromuniversal_tsdbimportClient,Ingesterbackend=Client('warp10','http://localhost/api/v0',token='WRITING_TOKEN_ABCDEF0123456789')series=Ingester(backend)series.append(1585934895000,field1=42.0)series.append(1585934896000,tags={'tag1':'value1'},field1=43.4,field2='value')series.commit()

上面的代码将生成基于warp10gts格式的数据有效载荷 并通过HTTP(S)请求发送。在

POST /api/v0/update HTTP/1.1
Host: localhost
X-Warp10-Token: WRITING_TOKEN_ABCDEF0123456789

1585934895000000// field1{} 42.0
1585934896000000// field1{tag1=value1} 42.0
1585934896000000// field2{tag1=value1} 'value'

高级用法

批处理

当您有大量的数据要发送时,您可能需要分割成几个HTTP请求。 在“批处理”模式下,库自动提交(发送)数据:

backend=Client('influx','http://localhost:8086',database='metrics')series=Ingester(backend,batch=10)foriinrange(0..26):series.append(field=i)series.commit()# final commit to save the last 6 values
Commit#1 Sent 10 new series (total: 10) in 0.02 s @ 2000.0 series/s (total execution: 0.13 s)
Commit#2 Sent 10 new series (total: 20) in 0.02 s @ 2000.0 series/s (total execution: 0.15 s)
Commit#3 Sent 6 new series (total: 26) in 0.01 s @ 2000.0 series/s (total execution: 0.17 s)
REPORT: 3 commits (3 successes), 26 series, 26 values in 0.17 s @ 2000.0 values/s",

省略时间戳

如果省略时间戳,则库将使用函数time.time() 生成UTC历元时间。精度取决于系统。在

在Warp10

中测量

Warp10中不存在InfluxDB测量。 库通过给Warp10类名加前缀来模拟度量:

backend=Client('warp10',token='WRITING_TOKEN_ABCDEF0123456789')series=Ingester(backend)series.append(1585934895000,measurement='mes',field1=42.0)series.commit()
1585934896000000// mes.field1{} 42.0 

托多

  • []API文档
  • []示例
  • []数据查询/获取功能
  • []重构后端特定代码(继承类?)在
  • []时间序列线协议优化
  • []Gzip/deflate HTTP压缩
  • []代码覆盖率/附加测试

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

推荐PyPI第三方库


热门话题
java调用Python函数作为TEID中的UDF   java Android。支持v4导入不工作   java如何影响具有静态属性的类   java如何在从glTexImage2D()分配后编辑纹理的像素颜色   javaspringboot+rediscache+@Cacheable适用于某些方法,而不适用于其他方法   java无法将动态Web模块方面从3.0更改为2.5   java如何在新选项卡中显示打印的文档?   java Google Cloud Endpoints API方法仅在删除用户参数时成功调用   java为什么我可以使用Stack<Double>但不能使用Stack<Double>?   java JDBC PreparedStatement似乎忽略了占位符   java如何设置JInternalFrame的标准图标化位置?   Java文件。copy()不复制文件   基于另一个类的java显示arraylist?   java Android Studio:错误:非法字符:'\u2028'   对象(Java)无法实例化类型映像?   javascript错误:飞行前响应的HTTP状态代码401无效   java确保泛型vararg参数具有相同的类型