如何使用 influxdb-python 向 influxdb 发送正确的时间戳

Posted

技术标签:

【中文标题】如何使用 influxdb-python 向 influxdb 发送正确的时间戳【英文标题】:How send proper timestamp to influxdb with influxdb-python 【发布时间】:2018-12-03 12:23:01 【问题描述】:

我有 influxdb 数据库test 测量:

name: mes1
time          Amount     Buy_order_id Price     
----          ------     ------------ -----     
1529832177822 0.02294    132868375    130117.83 

我想在 Grafana 中制作图表,但所有数据都是 1970 年的。我还有其他测量:

name: cpu_load_short
time                Bool_value Float_value Int_value String_value host     region
----                ---------- ----------- --------- ------------ ----     ------
1257894000000000000 true       0.64        3         Text         server01 us-west

这次效果很好。我发现,测量中的时间cpu_load_short 存储在 ns 中,但测量中的数据 mes1 存储在 ms 中。

我从 websocket 收到mes1 的时间。 cpu_load_short的时间是从python生成的:

datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')

所有数据都通过 influxdb-python 发送到 influxdb。我尝试调整mes1 的时间并在数字末尾添加六个零:

'1529832177822' -> '1529832177822000000'

但我收到了:

OverflowError: signed integer is greater than maximum

如何将数据发送到 influxdb 并从中制作图表,以便数据具有正确的格式和正确的日期?也许我遗漏了一些东西,但我不知道为什么我不能在 ns 中将数据发送到我的数据库,但我可以用 datetime 发送它。谁能解释一下,问题出在哪里?

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题,已经解决了,让我试着指导你。

当您使用 influxdb-python 客户端将您的点写入 InfluxDB 时,您可以在 write_points 方法中指定时间精度。 (http://influxdb-python.readthedocs.io/en/latest/api-documentation.html#influxdb.DataFrameClient.write_points)

一个例子:

from influxdb import InfluxDBClient
client = InfluxDBClient(host=host, port=port, database=database)
client.write_points(value, time_precision='ms')

这将为您将您的ms 转换为ns。希望这会有所帮助。

【讨论】:

如果你使用SeriesHelper类怎么办?

以上是关于如何使用 influxdb-python 向 influxdb 发送正确的时间戳的主要内容,如果未能解决你的问题,请参考以下文章

使用 Influxdb 和 python 在 DB 上写入数据

如何加载列表,向其中添加元素然后再次存储?

(Spring,Thymeleaf)如何使用模型内的模型列表向控制器“POST”请求?

如何配置 Mailgun 以与 Sign in with Apple 和 Apple 的中继服务一起使用?

如何向数组中添加新元素?

如何在AS3中向数组添加元素?