summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <classic@zzzcomputing.com>2014-06-13 13:21:52 -0400
committerMike Bayer <classic@zzzcomputing.com>2014-06-13 13:21:52 -0400
commit41de5519c956edec98e9f2619c7c90840c0920e0 (patch)
treeef216c97aafb24c8387abeed1a8c10765863030b
parentde1b68ec2c650b34f88cf6faf41ba74ecd216285 (diff)
parent65cfbeb3be62f485551448cb56351860c3a97b19 (diff)
downloaddogpile-cache-41de5519c956edec98e9f2619c7c90840c0920e0.tar.gz
Merged in sauliusmenkevicius/dogpile.cache/socket-timeout-for-redis-backend (pull request #16)
socket timeout for the redis backend
-rw-r--r--dogpile/cache/backends/redis.py7
-rw-r--r--tests/cache/test_redis_backend.py10
2 files changed, 14 insertions, 3 deletions
diff --git a/dogpile/cache/backends/redis.py b/dogpile/cache/backends/redis.py
index 3080ca0..9766201 100644
--- a/dogpile/cache/backends/redis.py
+++ b/dogpile/cache/backends/redis.py
@@ -66,6 +66,8 @@ class RedisBackend(CacheBackend):
Redis should expire it. This argument is only valid when
``distributed_lock`` is ``True``.
+ :param socket_timeout: float, seconds for socket timeout. Default is None (no timeout).
+
.. versionadded:: 0.5.0
:param lock_sleep: integer, number of seconds to sleep when failed to
@@ -84,6 +86,7 @@ class RedisBackend(CacheBackend):
self.port = arguments.pop('port', 6379)
self.db = arguments.pop('db', 0)
self.distributed_lock = arguments.get('distributed_lock', False)
+ self.socket_timeout = arguments.pop('socket_timeout', None)
self.lock_timeout = arguments.get('lock_timeout', None)
self.lock_sleep = arguments.get('lock_sleep', 0.1)
@@ -98,10 +101,10 @@ class RedisBackend(CacheBackend):
def _create_client(self):
if self.url is not None:
- return redis.StrictRedis.from_url(url=self.url)
+ return redis.StrictRedis.from_url(url=self.url, socket_timeout=self.socket_timeout)
else:
return redis.StrictRedis(host=self.host, password=self.password,
- port=self.port, db=self.db)
+ port=self.port, db=self.db, socket_timeout=self.socket_timeout)
def get_mutex(self, key):
if self.distributed_lock:
diff --git a/tests/cache/test_redis_backend.py b/tests/cache/test_redis_backend.py
index 7f2729b..d6dddc6 100644
--- a/tests/cache/test_redis_backend.py
+++ b/tests/cache/test_redis_backend.py
@@ -89,8 +89,16 @@ class RedisConnectionTest(TestCase):
}
self._test_helper(MockStrictRedis, arguments)
+ def test_connect_with_socket_timeout(self, MockStrictRedis):
+ arguments = {
+ 'host': '127.0.0.1',
+ 'port': 6379,
+ 'socket_timeout': 0.5
+ }
+ self._test_helper(MockStrictRedis, arguments)
+
def test_connect_with_url(self, MockStrictRedis):
arguments = {
'url': 'redis://redis:password@127.0.0.1:6379/0'
}
- self._test_helper(MockStrictRedis.from_url, arguments) \ No newline at end of file
+ self._test_helper(MockStrictRedis.from_url, arguments)