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
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