diff options
author | robot-piglet <robot-piglet@yandex-team.com> | 2024-11-07 12:23:36 +0300 |
---|---|---|
committer | robot-piglet <robot-piglet@yandex-team.com> | 2024-11-07 13:24:08 +0300 |
commit | a454f5fbc2c79ea1f8e9ca584d888a57f535c8f3 (patch) | |
tree | f6f4c048c1a1388d005bcf5996285ddcaedb1ba7 /contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py | |
parent | a74a901e7cd8f6eeab88e728e48c22e0de2f9a0f (diff) | |
download | ydb-a454f5fbc2c79ea1f8e9ca584d888a57f535c8f3.tar.gz |
Intermediate changes
commit_hash:8dfe46ba3b02673d0e6a35fdf824ab2c98255393
Diffstat (limited to 'contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py')
-rw-r--r-- | contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py b/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py index 001c578b26..33d6b9364c 100644 --- a/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py +++ b/contrib/python/clickhouse-connect/clickhouse_connect/driver/httpclient.py @@ -31,6 +31,7 @@ from clickhouse_connect.driver.transform import NativeTransform logger = logging.getLogger(__name__) columns_only_re = re.compile(r'LIMIT 0\s*$', re.IGNORECASE) +ex_header = 'X-ClickHouse-Exception-Code' # pylint: disable=too-many-instance-attributes @@ -346,7 +347,7 @@ class HttpClient(Client): params.update(self._validate_settings(settings or {})) method = 'POST' if payload or fields else 'GET' - response = self._raw_request(payload, params, headers, method, fields=fields) + response = self._raw_request(payload, params, headers, method, fields=fields, server_wait=False) if response.data: try: result = response.data.decode()[:-1].split('\t') @@ -369,10 +370,14 @@ class HttpClient(Client): finally: response.close() - err_str = f'HTTPDriver for {self.url} returned response code {response.status})' + err_str = f'HTTPDriver for {self.url} returned response code {response.status}' + err_code = response.headers.get(ex_header) + if err_code: + err_str = f'HTTPDriver for {self.url} received ClickHouse error code {err_code}' if err_content: err_msg = common.format_error(err_content.decode(errors='backslashreplace')) - err_str = f'{err_str}\n {err_msg}' + if err_msg.startswith('Code'): + err_str = f'{err_str}\n {err_msg}' else: err_str = 'The ClickHouse server returned an error.' @@ -444,7 +449,7 @@ class HttpClient(Client): finally: if query_session: self._active_session = None # Make sure we always clear this - if 200 <= response.status < 300: + if 200 <= response.status < 300 and not response.headers.get(ex_header): return response if response.status in (429, 503, 504): if attempts > retries: |