summaryrefslogtreecommitdiffstats
path: root/iredis/client.py
diff options
context:
space:
mode:
Diffstat (limited to 'iredis/client.py')
-rw-r--r--iredis/client.py28
1 files changed, 21 insertions, 7 deletions
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: