Beispiel #1
0
 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
Beispiel #2
0
 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
Beispiel #3
0
 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)
Beispiel #4
0
 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