2017-03-08 4 views
0

Ich habe die Bitraten von Live-Streams gefiltert und bekam die Ausgabe unten. Ich habe eine API mit Python und Pipe Continuous-Daten in Influxdb konstruiert, die wie Python api.py | überwacht werden sollte python influx.py. Ich kann diese Ausgabe jedoch nicht in Influxdb speichern. Bei Bedarf kann ich meinen API-Code zeigen.Bitrate und Zeit in Influxdb

Click here to show output to be stored in influxdb

#!usr/bin/python 

import sys 
import datetime 
from influxdb import InfluxDBClient 
from influxdb.client import InfluxDBClientError 
from influxdb import DataFrameClient 
import os 
import time 

client=InfluxDBClient('localhost',8086,'admin','admin',database='stackanm') 
client.create_database('stackanm') 
def store(bitrate,time): 
     json=[ 
       { 
       "measurement":"bitrates", 
       "tags":{  
         "time":time, 
       "fields":{ 
       "bitrate":bitrate 
         }    
     } 
     } 
     ] 
     client.write_points(json,time_precision='u') 


f = os.fdopen(sys.stdin.fileno(),'r',0) 
for line in f: 
    elements = line.strip().split() 
    if len(elements) == 1: 
    bitrate = elements[0] 

     unixtime = elements[1].split('.') 
     stdtime = datetime.datetime.utcfromtimestamp(long(float(unixtime[1]))).strftime('%Y-%m-%dT%H:%M:%S') 
     influxtime = ".".join([stdtime,unixtime[1]]) 
     store(bitrate,float(elements[1]),influxtime) 

Antwort

0

Sie gelöst wahrscheinlich das jetzt, aber ich stolperte über sie.

Sind Sie sicher, dass die Zeit als Tag angezeigt werden soll?

Ich habe in letzter Zeit an einigen Python und Influxdb Sachen gearbeitet und habe festgestellt, dass die Zeit außerhalb der Tags im JSON-Body zu sein scheint.

ähnlich:

"points": [ 
     { 
      "measurement": "cpu_load_short", 
      "tags": { 
       "host": "server01", 
       "region": "us-west" 
      }, 
      "time": "2009-11-10T23:00:00Z", 
      "fields": { 
       "value": 0.64 
      } 
     } 
    ] 
+0

ja ich verwende die Tags aber nicht in der Lage zu, diese Live-Streams in influxdb zu schicken und sie plotten –