Пример #1
0
 def check_walker(self):
     if self._walker is None:
         return True
     walkereventid = self._walker.get('eventid', None)
     if walkereventid is None: walkereventid = 1
     if walkereventid != self._event.get_current_event_id():
         logger.warning("A other Event has started - leaving now")
         return False
     mode = self._walker['walkertype']
     if mode == "countdown":
         logger.info("Checking walker mode 'countdown'")
         countdown = self._walker['walkervalue']
         if not countdown:
             logger.error(
                 "No Value for Mode - check your settings! Killing worker")
             return False
         if self.workerstart is None:
             self.workerstart = math.floor(time.time())
         else:
             if math.floor(
                     time.time()) >= int(self.workerstart) + int(countdown):
                 return False
         return True
     elif mode == "timer":
         logger.debug("Checking walker mode 'timer'")
         exittime = self._walker['walkervalue']
         if not exittime or ':' not in exittime:
             logger.error(
                 "No or wrong Value for Mode - check your settings! Killing worker"
             )
             return False
         return check_walker_value_type(exittime)
     elif mode == "round":
         logger.error("Rounds while sleep - HAHAHAH")
         return False
     elif mode == "period":
         logger.debug("Checking walker mode 'period'")
         period = self._walker['walkervalue']
         if len(period) == 0:
             logger.error(
                 "No Value for Mode - check your settings! Killing worker")
             return False
         return check_walker_value_type(period)
     elif mode == "coords":
         exittime = self._walker['walkervalue']
         if len(exittime) > 0:
             return check_walker_value_type(exittime)
         return True
     elif mode == "idle":
         logger.debug("Checking walker mode 'idle'")
         if len(self._walker['walkervalue']) == 0:
             logger.error(
                 "Wrong Value for mode - check your settings! Killing worker"
             )
             return False
         sleeptime = self._walker['walkervalue']
         logger.info('{} going to sleep', str(self._origin))
         killpogo = False
         if check_walker_value_type(sleeptime):
             self._stop_pogo()
             killpogo = True
             logger.debug("Setting device to idle for routemanager")
             self._db_wrapper.save_idle_status(self._dev_id, True)
             logger.debug("Device set to idle for routemanager {}",
                          str(self._origin))
         while check_walker_value_type(
                 sleeptime) and not self._stop_worker_event.isSet():
             time.sleep(1)
         logger.info('{} just woke up', str(self._origin))
         if killpogo:
             try:
                 self._start_pogo()
             except (WebsocketWorkerRemovedException,
                     WebsocketWorkerTimeoutException,
                     WebsocketWorkerConnectionClosedException):
                 logger.error("Timeout during init of worker {}",
                              str(self._origin))
         return False
     else:
         logger.error("Unknown walker mode! Killing worker")
         return False
Пример #2
0
 def check_walker(self):
     mode = self._walker['walkertype']
     walkereventid = self._walker.get('eventid', None)
     if walkereventid is not None and walkereventid != self._event.get_current_event_id(
     ):
         self.logger.warning("A other Event has started - leaving now")
         return False
     if mode == "countdown":
         self.logger.info("Checking walker mode 'countdown'")
         countdown = self._walker['walkervalue']
         if not countdown:
             self.logger.error(
                 "No Value for Mode - check your settings! Killing worker")
             return False
         if self.workerstart is None:
             self.workerstart = math.floor(time.time())
         else:
             if math.floor(
                     time.time()) >= int(self.workerstart) + int(countdown):
                 return False
         return True
     elif mode == "timer":
         self.logger.debug("Checking walker mode 'timer'")
         exittime = self._walker['walkervalue']
         if not exittime or ':' not in exittime:
             self.logger.error(
                 "No or wrong Value for Mode - check your settings! Killing worker"
             )
             return False
         return check_walker_value_type(exittime)
     elif mode == "round":
         self.logger.debug("Checking walker mode 'round'")
         rounds = self._walker['walkervalue']
         if len(rounds) == 0:
             self.logger.error(
                 "No Value for Mode - check your settings! Killing worker")
             return False
         processed_rounds = self._mapping_manager.routemanager_get_rounds(
             self._routemanager_name, self._origin)
         if int(processed_rounds) >= int(rounds):
             return False
         return True
     elif mode == "period":
         self.logger.debug("Checking walker mode 'period'")
         period = self._walker['walkervalue']
         if len(period) == 0:
             self.logger.error(
                 "No Value for Mode - check your settings! Killing worker")
             return False
         return check_walker_value_type(period)
     elif mode == "coords":
         exittime = self._walker['walkervalue']
         if len(exittime) > 0:
             return check_walker_value_type(exittime)
         return True
     elif mode == "idle":
         self.logger.debug("Checking walker mode 'idle'")
         if len(self._walker['walkervalue']) == 0:
             self.logger.error(
                 "Wrong Value for mode - check your settings! Killing worker"
             )
             return False
         sleeptime = self._walker['walkervalue']
         self.logger.info('going to sleep')
         killpogo = False
         if check_walker_value_type(sleeptime):
             self._stop_pogo()
             killpogo = True
         while not self._stop_worker_event.isSet(
         ) and check_walker_value_type(sleeptime):
             time.sleep(1)
         self.logger.info('just woke up')
         if killpogo:
             self._start_pogo()
         return False
     else:
         self.logger.error("Unknown walker mode! Killing worker")
         return False