From dd874ab02db04853d4b5952712ab34693f9a93de Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 4 Jan 2023 08:19:36 +0100 Subject: Merging upstream version 1.13.0. Signed-off-by: Daniel Baumann --- iredis/client.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'iredis/client.py') diff --git a/iredis/client.py b/iredis/client.py index 6555ff1..bbdb87c 100644 --- a/iredis/client.py +++ b/iredis/client.py @@ -20,7 +20,6 @@ from redis.exceptions import ( ResponseError, ) - from . import markdown, renders from .data import commands as commands_data from .commands import ( @@ -64,6 +63,7 @@ class Client: username=None, client_name=None, prompt=None, + verify_ssl=None, ): self.host = host self.port = port @@ -81,6 +81,8 @@ class Client: if prompt: self.prompt = prompt + self.verify_ssl = verify_ssl or "required" + self.client_id = None self.client_addr = None @@ -125,6 +127,7 @@ class Client: self.path, self.scheme, self.username, + self.verify_ssl, client_name=self.client_name, ) @@ -137,6 +140,7 @@ class Client: path=None, scheme="redis", username=None, + verify_ssl=None, client_name=None, ): if scheme in ("redis", "rediss"): @@ -154,6 +158,7 @@ class Client: connection_kwargs["username"] = username if scheme == "rediss": + connection_kwargs["ssl_cert_reqs"] = verify_ssl connection_class = SSLConnection else: connection_class = Connection @@ -286,6 +291,9 @@ class Client: last_error = e retry_times -= 1 need_refresh_connection = True + except redis.exceptions.ExecAbortError: + config.transaction = False + raise except ResponseError as e: response_message = str(e) if response_message.startswith("MOVED"): @@ -294,9 +302,6 @@ class Client: ) raise e - except redis.exceptions.ExecAbortError: - config.transaction = False - raise except KeyboardInterrupt: logger.warning("received KeyboardInterrupt... rebuild connection...") connection.disconnect() @@ -308,7 +313,8 @@ class Client: return None else: return response - raise last_error + if last_error: + raise last_error def reissue_with_redirect(self, response, *args, **kwargs): """ @@ -318,13 +324,21 @@ class Client: This feature is not supported for unix socket connection. """ # Redis Cluster only supports database zero. - _, slot, ip_port = response.split(" ") + _, _, ip_port = response.split(" ") ip, port = ip_port.split(":") port = int(port) print(response, file=sys.stderr) - connection = self.create_connection(ip, port) + connection = self.create_connection( + ip, + port, + username=self.username, + password=self.password, + path=self.path, + scheme=self.scheme, + client_name=self.client_name, + ) # if user sets dsn for dest node # use username and password from dsn settings if config.alias_dsn: -- cgit v1.2.3