diff options
author | andy <andy@andymccurdy.com> | 2011-11-07 16:50:18 -0800 |
---|---|---|
committer | andy <andy@andymccurdy.com> | 2011-11-07 16:50:18 -0800 |
commit | cfa5c8d5f7935a8c0f61492d9dc49394484e4ace (patch) | |
tree | 38d6285821f70bc57996e5600769937e4f9b0003 /redis/connection.py | |
parent | 415125e57a6fb164153b3dd9558dbadf23a5dbb6 (diff) | |
download | redis-py-cfa5c8d5f7935a8c0f61492d9dc49394484e4ace.tar.gz |
HiredisParser raises a RedisError if Hiredis is unavailable
Diffstat (limited to 'redis/connection.py')
-rw-r--r-- | redis/connection.py | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/redis/connection.py b/redis/connection.py index 6f08cdd..5a0b511 100644 --- a/redis/connection.py +++ b/redis/connection.py @@ -1,12 +1,23 @@ import socket from itertools import chain, imap -from redis.exceptions import ConnectionError, ResponseError, InvalidResponse +from redis.exceptions import ( + RedisError, + ConnectionError, + ResponseError, + InvalidResponse +) try: from cStringIO import StringIO except ImportError: from StringIO import StringIO +try: + import hiredis + hiredis_available = True +except ImportError: + hiredis_available = False + class PythonParser(object): "Plain Python parsing class" MAX_READ_LENGTH = 1000000 @@ -100,6 +111,10 @@ class PythonParser(object): class HiredisParser(object): "Parser class for connections using Hiredis" + def __init__(self): + if not hiredis_available: + raise RedisError("Hiredis is not installed") + def __del__(self): try: self.on_disconnect() @@ -136,12 +151,12 @@ class HiredisParser(object): response = self._reader.gets() return response -try: - import hiredis +if hiredis_available: DefaultParser = HiredisParser -except ImportError: +else: DefaultParser = PythonParser + class Connection(object): "Manages TCP communication to and from a Redis server" def __init__(self, host='localhost', port=6379, db=0, password=None, |