def start_redis_servers(servers, db=None, master=None): """Creates redis instances using specified locations from the settings. Returns list of Popen objects """ processes = [] devnull = open(os.devnull, "w") master_connection_kwargs = master and parse_connection_kwargs(master, db=db, password=REDIS_PASSWORD) for i, server in enumerate(servers): connection_kwargs = parse_connection_kwargs( server, db=db, password=REDIS_PASSWORD # will be overridden if specified in `server` ) parameters = dict(port=connection_kwargs.get("port", 0), requirepass=connection_kwargs["password"]) is_socket = server.startswith("unix://") or server.startswith("/") if is_socket: parameters.update(port=0, unixsocket="/tmp/redis{0}.sock".format(i), unixsocketperm=755) if master and not connection_kwargs == master_connection_kwargs: parameters.update( masterauth=master_connection_kwargs["password"], slaveof="{host} {port}".format( host=master_connection_kwargs["host"], port=master_connection_kwargs["port"] ), ) args = ["./redis/src/redis-server"] + [ "--{parameter} {value}".format(parameter=parameter, value=value) for parameter, value in parameters.items() ] p = subprocess.Popen(args, stdout=devnull) processes.append(p) return processes
def create_client(self, server): kwargs = parse_connection_kwargs( server, db=self.db, password=self.password, socket_timeout=self.socket_timeout, socket_connect_timeout=self.socket_connect_timeout, ) # Hack to make this work with SSL properly client_kwargs = kwargs.copy() if 'connection_class' in client_kwargs: client_kwargs['ssl'] = True del client_kwargs['connection_class'] client = redis.Redis(**client_kwargs) kwargs.update( parser_class=self.parser_class, connection_pool_class=self.connection_pool_class, connection_pool_class_kwargs=self.connection_pool_class_kwargs, ) if 'connection_class' in kwargs and not 'connection_class' in kwargs[ 'connection_pool_class_kwargs']: kwargs['connection_pool_class_kwargs'][ 'connection_class'] = kwargs['connection_class'] connection_pool = pool.get_connection_pool(client, **kwargs) client.connection_pool = connection_pool return client
def start_redis_servers(servers, db=None, master=None): """Creates redis instances using specified locations from the settings. Returns list of Popen objects """ processes = [] devnull = open(os.devnull, 'w') master_connection_kwargs = master and parse_connection_kwargs( master, db=db, password=REDIS_PASSWORD ) for i, server in enumerate(servers): connection_kwargs = parse_connection_kwargs( server, db=db, password=REDIS_PASSWORD, # will be overridden if specified in `server` ) parameters = dict( port=connection_kwargs.get('port', 0), requirepass=connection_kwargs['password'], ) is_socket = server.startswith('unix://') or server.startswith('/') if is_socket: parameters.update( port=0, unixsocket='/tmp/redis{0}.sock'.format(i), unixsocketperm=755, ) if master and not connection_kwargs == master_connection_kwargs: parameters.update( masterauth=master_connection_kwargs['password'], slaveof="{host} {port}".format( host=master_connection_kwargs['host'], port=master_connection_kwargs['port'], ) ) args = ['./redis/src/redis-server'] + [ "--{parameter} {value}".format(parameter=parameter, value=value) for parameter, value in parameters.items() ] p = subprocess.Popen(args, stdout=devnull) processes.append(p) return processes
def get_master_client(self): """ Get the write server:port of the master cache """ cache = self.options.get('MASTER_CACHE', None) if cache is None: return next(iter(self.client_list)) kwargs = parse_connection_kwargs(cache, db=self.db) return self.clients[( kwargs['host'], kwargs['port'], kwargs['db'], kwargs['unix_socket_path'], )]
def create_client(self, server): kwargs = parse_connection_kwargs( server, db=self.db, password=self.password, socket_timeout=self.socket_timeout, socket_connect_timeout=self.socket_connect_timeout, ) client = redis.Redis(**kwargs) kwargs.update( parser_class=self.parser_class, connection_pool_class=self.connection_pool_class, connection_pool_class_kwargs=self.connection_pool_class_kwargs, ) connection_pool = pool.get_connection_pool(client, **kwargs) client.connection_pool = connection_pool return client
def create_client(self, server): kwargs = parse_connection_kwargs( server, db=self.db, password=self.password, socket_timeout=self.socket_timeout, socket_connect_timeout=self.socket_connect_timeout, ) # remove socket-related connection arguments if kwargs.get('ssl', False): del kwargs['socket_timeout'] del kwargs['socket_connect_timeout'] del kwargs['unix_socket_path'] client = redis.Redis(**kwargs) kwargs.update( parser_class=self.parser_class, connection_pool_class=self.connection_pool_class, connection_pool_class_kwargs=self.connection_pool_class_kwargs, ) connection_pool = pool.get_connection_pool(client, **kwargs) client.connection_pool = connection_pool return client