From 4abe76917c2696bfff3c6ed48811c0176673fb26 Mon Sep 17 00:00:00 2001 From: Florent Vennetier Date: Tue, 10 Sep 2019 09:13:35 +0200 Subject: [PATCH] CH: support redis-py < 2.10.6 --- oioswift/__init__.py | 2 +- oioswift/common/middleware/container_hierarchy.py | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/oioswift/__init__.py b/oioswift/__init__.py index 52af183e..ff987d28 100644 --- a/oioswift/__init__.py +++ b/oioswift/__init__.py @@ -1 +1 @@ -__version__ = '1.10.0' +__version__ = '1.10.1' diff --git a/oioswift/common/middleware/container_hierarchy.py b/oioswift/common/middleware/container_hierarchy.py index d2c7a96a..6575fd93 100644 --- a/oioswift/common/middleware/container_hierarchy.py +++ b/oioswift/common/middleware/container_hierarchy.py @@ -150,6 +150,16 @@ class RedisDb(object): return lst """ + # Imported from redis-py, for compatibility with pre 2.10.6 versions. + URL_QUERY_ARGUMENT_PARSERS = { + 'socket_timeout': float, + 'socket_connect_timeout': float, + 'socket_keepalive': config_true_value, + 'retry_on_timeout': config_true_value, + 'max_connections': int, + 'health_check_interval': int, + } + def __init__(self, redis_host=None, sentinel_hosts=None, sentinel_name=None, **connection_kwargs): @@ -189,7 +199,10 @@ def _filter_conn_kwargs(self, connection_kwargs): Keep only keyword arguments known by Redis classes, cast them to the appropriate type. """ - parsers = self.__redis_mod.connection.URL_QUERY_ARGUMENT_PARSERS + if hasattr(self.__redis_mod.connection, 'URL_QUERY_ARGUMENT_PARSERS'): + parsers = self.__redis_mod.connection.URL_QUERY_ARGUMENT_PARSERS + else: + parsers = RedisDb.URL_QUERY_ARGUMENT_PARSERS return {k: parsers[k](v) for k, v in connection_kwargs.items() if k in parsers}