summaryrefslogtreecommitdiff
path: root/redis/connection.py
diff options
context:
space:
mode:
authorChayim <chayim@users.noreply.github.com>2021-11-25 14:18:33 +0200
committerGitHub <noreply@github.com>2021-11-25 14:18:33 +0200
commitd7b56103ed4d0ba9c05c74ca5580c72fcb70c09c (patch)
tree943b5df36eea7d2e37d50be626158461ecf41485 /redis/connection.py
parent8991370332e818cf9886cec6adc1858189b04bd6 (diff)
downloadredis-py-d7b56103ed4d0ba9c05c74ca5580c72fcb70c09c.tar.gz
Adding support for non-decodable commands (#1731)
Diffstat (limited to 'redis/connection.py')
-rwxr-xr-xredis/connection.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/redis/connection.py b/redis/connection.py
index eac9db3..2f91fae 100755
--- a/redis/connection.py
+++ b/redis/connection.py
@@ -315,7 +315,7 @@ class PythonParser(BaseParser):
def can_read(self, timeout):
return self._buffer and self._buffer.can_read(timeout)
- def read_response(self):
+ def read_response(self, disable_decoding=False):
raw = self._buffer.readline()
if not raw:
raise ConnectionError(SERVER_CLOSED_CONNECTION_ERROR)
@@ -355,8 +355,9 @@ class PythonParser(BaseParser):
length = int(response)
if length == -1:
return None
- response = [self.read_response() for i in range(length)]
- if isinstance(response, bytes):
+ response = [self.read_response(disable_decoding=disable_decoding)
+ for i in range(length)]
+ if isinstance(response, bytes) and disable_decoding is False:
response = self.encoder.decode(response)
return response
@@ -450,7 +451,7 @@ class HiredisParser(BaseParser):
if custom_timeout:
sock.settimeout(self._socket_timeout)
- def read_response(self):
+ def read_response(self, disable_decoding=False):
if not self._reader:
raise ConnectionError(SERVER_CLOSED_CONNECTION_ERROR)
@@ -758,10 +759,12 @@ class Connection:
self.connect()
return self._parser.can_read(timeout)
- def read_response(self):
+ def read_response(self, disable_decoding=False):
"""Read the response from a previously sent command"""
try:
- response = self._parser.read_response()
+ response = self._parser.read_response(
+ disable_decoding=disable_decoding
+ )
except socket.timeout:
self.disconnect()
raise TimeoutError("Timeout reading from %s:%s" %