summaryrefslogtreecommitdiff
path: root/redis/connection.py
diff options
context:
space:
mode:
authorandy <andy@andymccurdy.com>2011-11-07 16:50:18 -0800
committerandy <andy@andymccurdy.com>2011-11-07 16:50:18 -0800
commitcfa5c8d5f7935a8c0f61492d9dc49394484e4ace (patch)
tree38d6285821f70bc57996e5600769937e4f9b0003 /redis/connection.py
parent415125e57a6fb164153b3dd9558dbadf23a5dbb6 (diff)
downloadredis-py-cfa5c8d5f7935a8c0f61492d9dc49394484e4ace.tar.gz
HiredisParser raises a RedisError if Hiredis is unavailable
Diffstat (limited to 'redis/connection.py')
-rw-r--r--redis/connection.py23
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,