首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python redistimeseries时间戳不能早于时间序列中的最新时间戳

python redistimeseries时间戳不能早于时间序列中的最新时间戳
EN

Stack Overflow用户
提问于 2020-06-10 00:38:39
回答 1查看 607关注 0票数 0

我正在尝试使用Python redistimeseries包(RedisLabs v0.8.0) Python Redis包(RedisLabs) v3.5.3

但是,当我执行TS.ADD时-它总是返回错误

代码语言:javascript
复制
redis.exceptions.ResponseError: TSDB: Timestamp cannot be older than the latest timestamp in the time series

不管我给它加什么时间戳。我可以获取相同的时间戳值,并在相同的时间序列上执行相同的redis-cli添加操作,而不会出现任何问题。

为了确保现有记录不是问题所在,我创建了一个新的时间序列,因此不存在键/值/时间戳。同样的结果。

示例:

代码语言:javascript
复制
REDIS-CLI 127.0.0.1:6379> TS.CREATE FAN02.RUNTIME RETENTION 604800 LABELS eq_type FANS location SITE1

REDIS-CLI 127.0.0.1:6379>  TS.ADD FAN04.RUNTIME 1591720015 39
(integer) 1591720015

工作正常。

但是如果我在Python中做同样的事情(使用一个新的空时间序列),使用当前时间戳,我会得到错误;

代码语言:javascript
复制
>>> int(time.time())
1591720015

import redistimeseries.client
rts = redistimeseries.client.Client(host='x.x.x.x', port=6379)
rts.add('FAN04.RUNTIME', int(time.time()), newval)

>>> stacktrace
  File "C:/.../putdata.py", line 105, in main
    rts.add('FAN04.RUNTIME', int(time.time()), newval)
  File "C:\...\venv\lib\site-packages\redistimeseries\client.py", line 186,     in add
    return self.execute_command(self.ADD_CMD, *params)
  File "C:\...\venv\lib\site-packages\redis\client.py", line 901, in execute_command
    return self.parse_response(conn, command_name, **options)
  File "C:\...\venv\lib\site-packages\redis\client.py", line 915, in     parse_response
    response = connection.read_response()
  File "C:\...\venv\lib\site-packages\redis\connection.py", line 756, in read_response
    raise response

redis.exceptions.ResponseError: TSDB: Timestamp cannot be older than the latest timestamp in the time series

不确定发生了什么或者我做错了什么,我很难找到Python包的文档或示例来突出我的错误或缺乏理解。

有什么想法吗?

我使用的是python3.7,Redis 3.5.3,Redis TimeSeries 0.8.0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 07:22:26

Python的time.time()以秒的浮点值的形式返回当前时间,而RedisTimeSeries期望毫秒级的精度...尝试:

代码语言:javascript
复制
rts.add('FAN04.RUNTIME', int(time.time() * 1000), newval)

或者使用datetimenow()或类似的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62287577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档