def _init(self, server, params): super(RedisCache, self).__init__(params) self._params = params self._server = server self._pickle_version = None self.__master_client = None self.clients = [] self.sharder = CacheSharder() if not isinstance(server, (list, tuple)): servers = [server] else: servers = server for server in servers: unix_socket_path = None if ':' in server: host, port = server.rsplit(':', 1) try: port = int(port) except (ValueError, TypeError): raise ImproperlyConfigured("port value must be an integer") else: host, port = None, None unix_socket_path = server kwargs = { 'db': self.db, 'password': self.password, 'host': host, 'port': port, 'unix_socket_path': unix_socket_path, } connection_pool = pool.get_connection_pool( parser_class=self.parser_class, **kwargs ) client = redis.Redis( connection_pool=connection_pool, **kwargs ) self.clients.append(client) self.sharder.add(client, "%s:%s" % (host, port))
class RedisCache(BaseCache): def __init__(self, server, params): """ Connect to Redis, and set up cache backend. """ self._init(server, params) def _init(self, server, params): super(RedisCache, self).__init__(params) self._params = params self._server = server self._pickle_version = None self.__master_client = None self.clients = [] self.sharder = CacheSharder() if not isinstance(server, (list, tuple)): servers = [server] else: servers = server for server in servers: unix_socket_path = None if ':' in server: host, port = server.rsplit(':', 1) try: port = int(port) except (ValueError, TypeError): raise ImproperlyConfigured("port value must be an integer") else: host, port = None, None unix_socket_path = server kwargs = { 'db': self.db, 'password': self.password, 'host': host, 'port': port, 'unix_socket_path': unix_socket_path, } connection_pool = pool.get_connection_pool( parser_class=self.parser_class, **kwargs ) client = redis.Redis( connection_pool=connection_pool, **kwargs ) self.clients.append(client) self.sharder.add(client, "%s:%s" % (host, port)) @property def params(self): return self._params or {} @property def options(self): return self.params.get('OPTIONS', {}) @property def db(self): _db = self.params.get('db', self.options.get('DB', 1)) try: _db = int(_db) except (ValueError, TypeError): raise ImproperlyConfigured("db value must be an integer") return _db @property def password(self): return self.params.get('password', self.options.get('PASSWORD', None)) @property def parser_class(self): cls = self.options.get('PARSER_CLASS', None) if cls is None: return DefaultParser mod_path, cls_name = cls.rsplit('.', 1) try: mod = importlib.import_module(mod_path) parser_class = getattr(mod, cls_name) except AttributeError: raise ImproperlyConfigured("Could not find parser class '%s'" % parser_class) except ImportError, e: raise ImproperlyConfigured("Could not find module '%s'" % e) return parser_class