def maxProcessCompute(self, maxProcess): cpu = cpu_count() if maxProcess == 0: return cpu if not isinstance(maxProcess, int): Logger.warning( 'max_process in configs is not an integer. Redispider will use default configs.' ) return cpu if maxProcess < 0: Logger.warning( 'max_process should be larger than 0. Redispider will use default configs.' ) return cpu return maxProcess
def connect(self): self.connection_pool = redis.ConnectionPool(host=self.host, port=self.port, password=self.password) try: self.rds = redis.Redis(connection_pool=self.connection_pool) if configs.master.clear_redis_db: self.rds.flushdb() self.rds.set(configs.redis.key.master_name, self.name) self.rds.set(configs.redis.key.master_state, 'init') self.rds.client_setname(self.name) self.client_info = getItemFromDictList('name', self.name, self.rds.client_list()) return True except (TimeoutError, redis.exceptions.ConnectionError): Logger.warning( 'Cannot connect to redis. Please check your connection. ') return False
def messageLoop(self): while True: message = fetchMessage(self.rds) if message == None: continue code, msg = message if code == 101: Logger.info('Slave %s is online' % msg) self.slaveList.append(msg) if code == 102: try: self.slaveList.remove(msg) Logger.info('Slave %s is offline' % msg) except ValueError: pass Logger.warning( 'Slave %s is going offline but it was not online at all.' % msg)
def connect(self): self.connection_pool = redis.ConnectionPool(host=self.host, port=self.port, password=self.password) try: self.rds = redis.Redis(connection_pool=self.connection_pool) masterState = self.rds.get( configs.redis.key.master_state).decode('utf8') if masterState == None: Logger.warning('Cannot connect to master. Try another time...') return False if masterState == 'init': Logger.warning( 'Master is initiating. Waiting until it is done...') return False if masterState == 'sleep': Logger.warning( 'Master is sleeping. Waiting until it wake up...') return False self.name = self.rds.rpoplpush( configs.redis.key.slave_name_offline, configs.redis.key.slave_name_online).decode('utf8') self.rds.client_setname(self.name.encode('utf8')) self.client_info = getItemFromDictList('name', self.name, self.rds.client_list()) self.masterName = self.rds.get( configs.redis.key.master_name).decode('utf8') if self.name == None: Logger.info( 'Master does not need more slave! Slave will be shutdown...' ) exit(0) sendMessage(101, self.name, self.rds) return True except (TimeoutError, redis.exceptions.ConnectionError): Logger.warning( 'Cannot connect to redis. Please check your connection. ') return False