Skip to content

Commit 99a5a65

Browse files
committed
reduced the number of objects allocated in make_lines.
no change in functionality; only efficiency.
1 parent d1aa81a commit 99a5a65

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

influxdb/line_protocol.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
from __future__ import print_function
66
from __future__ import unicode_literals
77

8-
from copy import copy
98
from datetime import datetime
109
from numbers import Integral
1110

1211
from pytz import UTC
1312
from dateutil.parser import parse
14-
from six import binary_type, text_type, integer_types, PY2
13+
from six import iteritems, binary_type, text_type, integer_types, PY2
1514

1615
EPOCH = UTC.localize(datetime.utcfromtimestamp(0))
1716

@@ -108,7 +107,7 @@ def make_lines(data, precision=None):
108107
matching the line protocol introduced in InfluxDB 0.9.0.
109108
"""
110109
lines = []
111-
static_tags = data.get('tags', None)
110+
static_tags = data.get('tags')
112111
for point in data['points']:
113112
elements = []
114113

@@ -119,32 +118,29 @@ def make_lines(data, precision=None):
119118
key_values = [measurement]
120119

121120
# add tags
122-
if static_tags is None:
123-
tags = point.get('tags', {})
121+
if static_tags:
122+
tags = dict(static_tags) # make a copy, since we'll modify
123+
tags.update(point.get('tags') or {})
124124
else:
125-
tags = copy(static_tags)
126-
tags.update(point.get('tags', {}))
125+
tags = point.get('tags') or {}
127126

128127
# tags should be sorted client-side to take load off server
129-
for tag_key in sorted(tags.keys()):
128+
for tag_key, tag_value in sorted(iteritems(tags)):
130129
key = _escape_tag(tag_key)
131-
value = _escape_tag(tags[tag_key])
130+
value = _escape_tag(tag_value)
132131

133132
if key != '' and value != '':
134-
key_values.append("{key}={value}".format(key=key, value=value))
133+
key_values.append(key + "=" + value)
135134
key_values = ','.join(key_values)
136135
elements.append(key_values)
137136

138137
# add fields
139138
field_values = []
140-
for field_key in sorted(point['fields'].keys()):
139+
for field_key, field_value in sorted(iteritems(point['fields'])):
141140
key = _escape_tag(field_key)
142-
value = _escape_value(point['fields'][field_key])
141+
value = _escape_value(field_value)
143142
if key != '' and value != '':
144-
field_values.append("{key}={value}".format(
145-
key=key,
146-
value=value
147-
))
143+
field_values.append(key + "=" + value)
148144
field_values = ','.join(field_values)
149145
elements.append(field_values)
150146

0 commit comments

Comments
 (0)