Exemplo n.º 1
0
 def manage_data(self):
     """ Prepare data to be sent to influxdb. """
     for c in last_packet_time.keys():
         lock.acquire()
         self.make_channel_latency_delay(c, last_packet_time[c])
         lock.release()
     try:
         self.send_points()
     except BaseException as e:
         logger.critical(e)
         shutdown_event.set()
     return True
Exemplo n.º 2
0
    def manage_data(self, trace):
        """ Build, pack and send waveform to influxdb

        - prepare trace's samples
        - send them to influxdb

        Return True is data have been pushed.
        """
        now = datetime.utcnow()
        delta = trace.stats['delta']
        starttime = trace.stats['starttime']
        endtime = trace.stats['endtime']
        channel = trace.get_id()

        # Update :
        # - timestamp of the last channel's packet received
        # - last sample time (endtime)
        lock.acquire()
        last_packet_time[channel] = {
            'timestamp': UTCDateTime(now),
            'endtime': endtime
        }
        lock.release()

        # Set all trace samples in the proper format.
        self.make_line_count(channel, starttime, delta, trace.data)

        # send data to influxdb if buffer is filled enough
        if len(self.data) > self.nb_data_max:
            now = datetime.utcnow()
            self.make_stats(now)
            logger.debug("Data sent")
            try:
                self.send_points(debug=False)
            except Exception as e:
                logger.critical(e)
                shutdown_event.set()
            else:
                return True
        else:
            return False
Exemplo n.º 3
0
    def manage_data(self, trace):
        """Return True is data have been pushed to influxdb"""
        delta = trace.stats['delta']
        starttime = trace.stats['starttime']
        channel = trace.get_id()
        now = datetime.utcnow()
        nbsamples = len(trace.data)
        last_sample_time = starttime + delta * (nbsamples - 1)

        l = UTCDateTime(now) - last_sample_time

        lock.acquire()
        last_packet_time[channel] = last_sample_time
        lock.release()

        # do not process 'old' data
        # if l > self.TIME_MAX:
        #     return

        self.make_line_count(channel,
                             starttime,
                             delta,
                             trace.data)

        self.make_line_latency(channel,
                               starttime + delta * (nbsamples - 1),
                               l)

        # send data to influxdb if buffer is filled enough
        if len(self.data) > self.nb_data_max:
            now = datetime.utcnow()
            self.make_stats(now)
            logger.debug("Data sent")
            try:
                self.send_points(debug=False)
            except InfluxDBServerError as e:
                self.force_shutdown(e)
            else:
                return True
        else:
            return False
Exemplo n.º 4
0
 def make_line_delay(self):
     for c in last_packet_time.keys():
         lock.acquire()
         self.make_line_channel_delay(c, last_packet_time[c])
         lock.release()