From 5469bda492b904540b550f50239811d26c45dac8 Mon Sep 17 00:00:00 2001 From: yeyuqiu Date: Mon, 29 Mar 2021 14:25:31 +0800 Subject: [PATCH 1/3] Using POST instead of GET for long queries --- influxdb/client.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/influxdb/client.py b/influxdb/client.py index 51a64ac3..c4053446 100644 --- a/influxdb/client.py +++ b/influxdb/client.py @@ -16,6 +16,7 @@ import struct import time from itertools import chain, islice +from urllib.parse import urlencode import msgpack import requests @@ -518,14 +519,26 @@ def query(self, if query.lower().startswith("select ") and " into " in query.lower(): method = "POST" - response = self.request( - url="query", - method=method, - params=params, - data=None, - stream=chunked, - expected_response_code=expected_response_code - ) + # set GET query max length = 1000 + if len(query) > 1000: + response = self.request( + url="query", + method="POST", + params=None, + data=urlencode(params), + stream=chunked, + expected_response_code=expected_response_code, + headers={"Content-Type": "application/x-www-form-urlencoded"}, + ) + else: + response = self.request( + url="query", + method=method, + params=params, + data=None, + stream=chunked, + expected_response_code=expected_response_code + ) data = response._msgpack if not data: From 95310c9bd76c4851c157e5da81e8b18811380fb6 Mon Sep 17 00:00:00 2001 From: yeyuqiu Date: Mon, 29 Mar 2021 17:54:50 +0800 Subject: [PATCH 2/3] import urlencode support py2/3 --- influxdb/client.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/influxdb/client.py b/influxdb/client.py index c4053446..895a03ac 100644 --- a/influxdb/client.py +++ b/influxdb/client.py @@ -16,7 +16,11 @@ import struct import time from itertools import chain, islice -from urllib.parse import urlencode + +try: + from urllib.parse import urlencode +except ImportError: + from urllib import urlencode import msgpack import requests From 2e58bbda4205cfbb468ef289141813baf0e58885 Mon Sep 17 00:00:00 2001 From: yeyuqiu Date: Tue, 30 Mar 2021 10:02:27 +0800 Subject: [PATCH 3/3] use six instead of try except to import urlencode --- influxdb/client.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/influxdb/client.py b/influxdb/client.py index 895a03ac..72a82b9a 100644 --- a/influxdb/client.py +++ b/influxdb/client.py @@ -17,15 +17,10 @@ import time from itertools import chain, islice -try: - from urllib.parse import urlencode -except ImportError: - from urllib import urlencode - import msgpack import requests import requests.exceptions -from six.moves.urllib.parse import urlparse +from six.moves.urllib.parse import urlparse, urlencode from influxdb.line_protocol import make_lines, quote_ident, quote_literal from influxdb.resultset import ResultSet