summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy McCurdy <andy@andymccurdy.com>2015-11-02 13:22:29 -0500
committerAndy McCurdy <andy@andymccurdy.com>2015-11-02 13:22:29 -0500
commit7360a0d6211fd8236a412031c936c879f002a20a (patch)
tree0572fd6c38ee617279d01e72abaa44b407bf401e
parent93ee0b97faab8de46a77b8cf140f68912e921e0a (diff)
parent01460eb3b6abb8151faf1da9b9703f15b6a7ad64 (diff)
downloadredis-py-7360a0d6211fd8236a412031c936c879f002a20a.tar.gz
Merge pull request #669 from th13f/master
parsing 'max number of clients reached' as ConnectionError
-rwxr-xr-xredis/connection.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/redis/connection.py b/redis/connection.py
index 19d6925..980354d 100755
--- a/redis/connection.py
+++ b/redis/connection.py
@@ -80,7 +80,10 @@ class Token(object):
class BaseParser(object):
EXCEPTION_CLASSES = {
- 'ERR': ResponseError,
+ 'ERR': {
+ 'default': ResponseError,
+ 'max number of clients reached': ConnectionError
+ },
'EXECABORT': ExecAbortError,
'LOADING': BusyLoadingError,
'NOSCRIPT': NoScriptError,
@@ -92,7 +95,14 @@ class BaseParser(object):
error_code = response.split(' ')[0]
if error_code in self.EXCEPTION_CLASSES:
response = response[len(error_code) + 1:]
- return self.EXCEPTION_CLASSES[error_code](response)
+ exception_class = self.EXCEPTION_CLASSES[error_code]
+ if isinstance(exception_class, dict):
+ return exception_class.get(
+ response,
+ exception_class['default']
+ )(response)
+ else:
+ return exception_class(response)
return ResponseError(response)