Commit 9156189f authored by Sean Bleier's avatar Sean Bleier

Adding SOCKET_CONNECT_TIMEOUT option.

parent fb26ad82
...@@ -21,7 +21,7 @@ clean: ...@@ -21,7 +21,7 @@ clean:
.PHONY: test .PHONY: test
test: install_requirements test: install_requirements
PYTHONPATH=$(PYTHONPATH): django-admin.py test --settings=tests.settings -s PYTHONPATH=$(PYTHONPATH): django-admin.py test tests.testapp.tests.socket_timeout_tests:SocketConnectTimeoutTestCase --settings=tests.settings -s
.PHONY: shell .PHONY: shell
shell: shell:
......
...@@ -57,6 +57,7 @@ class BaseRedisCache(BaseCache): ...@@ -57,6 +57,7 @@ class BaseRedisCache(BaseCache):
self.parser_class = self.get_parser_class() self.parser_class = self.get_parser_class()
self.pickle_version = self.get_pickle_version() self.pickle_version = self.get_pickle_version()
self.socket_timeout = self.get_socket_timeout() self.socket_timeout = self.get_socket_timeout()
self.socket_connect_timeout = self.get_socket_connect_timeout()
self.connection_pool_class = self.get_connection_pool_class() self.connection_pool_class = self.get_connection_pool_class()
self.connection_pool_class_kwargs = ( self.connection_pool_class_kwargs = (
self.get_connection_pool_class_kwargs() self.get_connection_pool_class_kwargs()
...@@ -106,13 +107,21 @@ class BaseRedisCache(BaseCache): ...@@ -106,13 +107,21 @@ class BaseRedisCache(BaseCache):
try: try:
return int(_pickle_version) return int(_pickle_version)
except (ValueError, TypeError): except (ValueError, TypeError):
raise ImproperlyConfigured("pickle version value must be an integer") raise ImproperlyConfigured(
"pickle version value must be an integer"
)
def get_socket_timeout(self): def get_socket_timeout(self):
return self.options.get('SOCKET_TIMEOUT', None) return self.options.get('SOCKET_TIMEOUT', None)
def get_socket_connect_timeout(self):
return self.options.get('SOCKET_CONNECT_TIMEOUT', None)
def get_connection_pool_class(self): def get_connection_pool_class(self):
pool_class = self.options.get('CONNECTION_POOL_CLASS', 'redis.ConnectionPool') pool_class = self.options.get(
'CONNECTION_POOL_CLASS',
'redis.ConnectionPool'
)
return import_class(pool_class) return import_class(pool_class)
def get_connection_pool_class_kwargs(self): def get_connection_pool_class_kwargs(self):
...@@ -160,6 +169,7 @@ class BaseRedisCache(BaseCache): ...@@ -160,6 +169,7 @@ class BaseRedisCache(BaseCache):
db=self.db, db=self.db,
password=self.password, password=self.password,
socket_timeout=self.socket_timeout, socket_timeout=self.socket_timeout,
socket_connect_timeout=self.socket_connect_timeout,
) )
client = redis.Redis(**kwargs) client = redis.Redis(**kwargs)
kwargs.update( kwargs.update(
......
...@@ -31,6 +31,7 @@ class CacheConnectionPool(object): ...@@ -31,6 +31,7 @@ class CacheConnectionPool(object):
connection_pool_class=None, connection_pool_class=None,
connection_pool_class_kwargs=None, connection_pool_class_kwargs=None,
socket_timeout=None, socket_timeout=None,
socket_connect_timeout=None,
**kwargs **kwargs
): ):
connection_identifier = (host, port, db, unix_socket_path) connection_identifier = (host, port, db, unix_socket_path)
...@@ -50,6 +51,7 @@ class CacheConnectionPool(object): ...@@ -50,6 +51,7 @@ class CacheConnectionPool(object):
'connection_class': connection_class, 'connection_class': connection_class,
'parser_class': parser_class, 'parser_class': parser_class,
'socket_timeout': socket_timeout, 'socket_timeout': socket_timeout,
'socket_connect_timeout': socket_connect_timeout,
} }
kwargs.update(connection_pool_class_kwargs) kwargs.update(connection_pool_class_kwargs)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment