Skip to content

Commit 15473eb

Browse files
committed
now made streaming optional for chunked queries
1 parent f50cdbc commit 15473eb

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

influxdb/client.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ def switch_user(self, username, password):
201201
self._password = password
202202

203203
def request(self, url, method='GET', params=None, data=None,
204-
expected_response_code=200, headers=None, chunked=False):
204+
expected_response_code=200, headers=None, stream=True):
205205
"""Make a HTTP request to the InfluxDB API.
206206
207207
:param url: the path of the HTTP request, e.g. write, query, etc.
@@ -250,7 +250,7 @@ def request(self, url, method='GET', params=None, data=None,
250250
proxies=self._proxies,
251251
verify=self._verify_ssl,
252252
timeout=self._timeout,
253-
stream=chunked
253+
stream=stream
254254
)
255255
break
256256
except (requests.exceptions.ConnectionError,
@@ -316,17 +316,33 @@ def write(self, data, params=None, expected_response_code=204,
316316

317317
@staticmethod
318318
def _read_chunked_response(response, raise_errors=True):
319+
result_set = {}
319320
for line in response.iter_lines():
320321
if isinstance(line, bytes):
321322
line = line.decode('utf-8')
322323
data = json.loads(line)
324+
for result in data.get('results', []):
325+
for _key in result:
326+
if isinstance(result[_key], list):
327+
result_set.setdefault(
328+
_key, []).extend(result[_key])
329+
330+
return(ResultSet(result_set, raise_errors=raise_errors))
331+
332+
@staticmethod
333+
def _read_chunked_response_generator(response, raise_errors=True):
334+
for line in response.iter_lines():
323335
result_set = {}
336+
if isinstance(line, bytes):
337+
line = line.decode('utf-8')
338+
data = json.loads(line)
324339
for result in data.get('results', []):
325340
for _key in result:
326341
if isinstance(result[_key], list):
327342
result_set.setdefault(
328343
_key, []).extend(result[_key])
329344
yield(ResultSet(result_set, raise_errors=raise_errors))
345+
result_set = {}
330346

331347
def query(self,
332348
query,
@@ -336,7 +352,8 @@ def query(self,
336352
database=None,
337353
raise_errors=True,
338354
chunked=False,
339-
chunk_size=0):
355+
chunk_size=0,
356+
stream=False):
340357
"""Send a query to InfluxDB.
341358
342359
:param query: the actual query string
@@ -393,11 +410,15 @@ def query(self,
393410
params=params,
394411
data=None,
395412
expected_response_code=expected_response_code,
396-
chunked=chunked
413+
stream=stream
397414
)
398415

399416
if chunked:
400-
return self._read_chunked_response(response)
417+
if stream:
418+
return self._read_chunked_response_generator(response,raise_errors)
419+
else:
420+
return self._read_chunked_response(response,raise_errors)
421+
401422

402423
data = response.json()
403424

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy