diff options
author | Andy McCurdy <andy@andymccurdy.com> | 2015-11-02 13:22:29 -0500 |
---|---|---|
committer | Andy McCurdy <andy@andymccurdy.com> | 2015-11-02 13:22:29 -0500 |
commit | 7360a0d6211fd8236a412031c936c879f002a20a (patch) | |
tree | 0572fd6c38ee617279d01e72abaa44b407bf401e | |
parent | 93ee0b97faab8de46a77b8cf140f68912e921e0a (diff) | |
parent | 01460eb3b6abb8151faf1da9b9703f15b6a7ad64 (diff) | |
download | redis-py-7360a0d6211fd8236a412031c936c879f002a20a.tar.gz |
Merge pull request #669 from th13f/master
parsing 'max number of clients reached' as ConnectionError
-rwxr-xr-x | redis/connection.py | 14 |
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) |