def handle(self, *args, **options): try: series = [] myclient = InfluxDBClient(settings.INFLUXDB_HOST, settings.INFLUXDB_PORT, settings.INFLUXDB_USER, settings.INFLUXDB_PASSWORD, settings.INFLUX_DB_NAME) print("writing to %s" % myclient._get_host()) with open(options['file']) as f: for i, line in enumerate(f): "['id', 'measurement_time', 'value', 'device_parameter_id']" row = line.strip().split(',') # print(row) if i < int(options['start']): continue if i == int(options['final']): break dt = dateparse.parse_datetime(row[1]) point_values = { "time": dt.replace(tzinfo=timezone.utc).isoformat(), "measurement": DPMeasurements.INFLUX_MEASUREMENT_NAME, 'fields': { 'value': Decimal(row[2]), }, 'tags': { DPMeasurements.DP_TAG: int(row[3]), }, } series.append(point_values) batch_size = int(options['batch']) if i % batch_size == 0: print('writing batch {}'.format(i / batch_size)) if options['verbosity'] > 1: print(series) myclient.write_points(series) series = [] if series: # write final batch print('writing batch {}'.format(i / batch_size)) myclient.write_points(series) except Exception as e: print(e) raise e