Как отправить правильную временную метку в influenxdb с помощью effxdb-python
У меня есть база данных infxdb test
с измерением:
name: mes1
time Amount Buy_order_id Price
---- ------ ------------ -----
1529832177822 0.02294 132868375 130117.83
Я хотел бы сделать график в Графане, но все данные в 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
хранятся в нс, но данные в измерении mes1
хранятся в мс.
Я получаю время для mes1
из веб-сокета. Время cpu_load_short
генерируется из python:
datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ')
Все данные отправляются в influenxdb через influenxdb-python. Я пытался настроить время для mes1
и добавить шесть нулей в конце числа:
'1529832177822' -> '1529832177822000000'
но я получил:
OverflowError: signed integer is greater than maximum
Как я могу отправлять данные в influenxdb и составлять из него график, чтобы данные были в правильном формате и правильной дате? Может быть, я что-то упустил, но я не могу понять, почему я не могу отправить данные в свою базу данных в ns, но я могу отправить это с датой и временем. Кто-нибудь может мне объяснить, в чем проблема?
1 ответ
Я столкнулся с той же проблемой и смог ее решить, позвольте мне попытаться помочь вам.
Когда вы записываете свои очки в InfluxDB с помощью клиента InfluxDB-Python, вы можете указать точность времени в write_points
метод. ( http://influxdb-python.readthedocs.io/en/latest/api-documentation.html)
Пример:
from influxdb import InfluxDBClient
client = InfluxDBClient(host=host, port=port, database=database)
client.write_points(value, time_precision='ms')
Это преобразует ваш ms
в ns
для тебя. Надеюсь это поможет.