def run(self): while True: self.manage_data() shutdown_event.wait(1.) if shutdown_event.isSet(): logger.info("%s thread has catched *shutdown_event*" % self.__class__.__name__) sys.exit(0)
def run(self): """ Main loop. """ while True: self.manage_data() shutdown_event.wait(self.refresh_rate) if shutdown_event.isSet(): logger.info("%s thread has catched *shutdown_event*" % self.__class__.__name__) sys.exit(0)
def run(self): """ Run unless shutdown signal is received. """ timeout = 0.1 # sec wait_time = 0 # sec while True: try: trace = q.get(timeout=timeout) except Queue.Empty: # process queue before shutdown if q.empty() and shutdown_event.isSet(): logger.info("%s thread has caught *shutdown_event*" % self.__class__.__name__) sys.exit(0) wait_time += timeout if wait_time > self.flushtime: if len(self.data) == 0: # no data from seedlink thread logger.info('Flush timer reached (%ds)' % self.flushtime + '. No data coming from seedlink thread!' + ' Network/connection down ?') else: # force data flush to influxdb # even if data block is not completed logger.info('Flush timer reached (%ds)' % self.flushtime + '. Force data flush to influxdb ' + '(bsize=%d/%d)' % (len(self.data), self.nb_data_max)) now = datetime.utcnow() self.make_stats(now) try: self.send_points() except Exception as e: logger.critical(e) shutdown_event.set() # self.force_shutdown(e) wait_time = 0 else: data_pushed = self.manage_data(trace) q.task_done() if data_pushed: wait_time = 0
def on_data(self, trace): """Implement the on_data callback""" channel = trace.get_id() if channel not in self.selected_streams: return try: timeout = 15 q.put(trace, block=True, timeout=timeout) except Queue.Full: logger.error("Queue is full and timeout(%ds) reached !" % timeout) logger.error("Ignoring data !") if shutdown_event.isSet(): logger.info("%s thread has catched *shutdown_event*" % self.__class__.__name__) self.stop_seedlink()
def run(self): """Run unless shutdown signal is received. """ # time in seconds timeout = 0.1 max_cumulated_wait_time = 15 wait_time = 0 while True: try: trace = q.get(timeout=timeout) except Queue.Empty: # process queue before shutdown if q.empty() and shutdown_event.isSet(): logger.info("%s thread has catched *shutdown_event*" % self.__class__.__name__) sys.exit(0) wait_time += timeout if wait_time > max_cumulated_wait_time: # force data flush to influxdb # even if data block is not completed logger.info('Timer reached (%ds)' % max_cumulated_wait_time + '. Force data flush to influxdb ' + '(bsize=%d/%d)!' % (len(self.data), self.nb_data_max)) now = datetime.utcnow() self.make_stats(now) try: self.send_points() except BaseException as e: self.force_shutdown(e) wait_time = 0 else: data_pushed = self.manage_data(trace) q.task_done() if data_pushed: wait_time = 0
def on_data(self, trace): """Implement the on_data callback.""" channel = trace.get_id() if channel not in self.selected_streams: return now = datetime.utcnow() endtime = trace.stats['endtime'] sample_rate = trace.stats['sampling_rate'] # filter out too old data latency = UTCDateTime(now) - endtime if self.SL_PACKET_TIME_MAX and latency > self.SL_PACKET_TIME_MAX: if logger.getEffectiveLevel() <= logging.INFO: # Show when a channel becomes unavailable # ie. latency > threshold if channel not in self.show_too_old_packet_msg or \ self.show_too_old_packet_msg[channel] is True: msg = "[%s] latency too high (%.1f s), " % \ (channel, latency) + \ "trace disabled until latency < %.1f s" % \ (self.SL_PACKET_TIME_MAX) logger.info(msg) self.show_too_old_packet_msg[channel] = False if shutdown_event.isSet(): logger.info("%s thread has catched *shutdown_event*" % self.__class__.__name__) self.stop_seedlink() return if logger.getEffectiveLevel() <= logging.INFO: # Show when a channel becomes available ie. latency < threshold if channel not in self.show_too_old_packet_msg or \ self.show_too_old_packet_msg[channel] is False: self.show_too_old_packet_msg[channel] = True msg = "[%s] latency is %.1f < %.1f s, " % \ (channel, latency, self.SL_PACKET_TIME_MAX) + \ "trace enabled" logger.info(msg) # resample data if self.resample_rate: try: trace.resample(self.resample_rate) except Exception: msg = "Can't resample %s(%.2f Hz) to %.2f Hz" % \ (channel, sample_rate, self.resample_rate) logger.warning(msg) try: q.put(trace, block=True, timeout=self.queue_timeout) except Queue.Full: logger.error("Queue is full and timeout(%ds) reached !" % self.queue_timeout) logger.error("Ignoring data !") if shutdown_event.isSet(): logger.info("%s thread has catched *shutdown_event*" % self.__class__.__name__) self.stop_seedlink()