Example #1
0
def get_system_infos(db_wrapper):
    pid = os.getpid()
    py = psutil.Process(pid)
    gc.set_threshold(5, 1, 1)
    gc.enable()

    while not terminate_mad.is_set():
        logger.debug('Starting internal Cleanup')
        logger.debug('Collecting...')
        unreachable_objs = gc.collect()
        logger.debug('Unreachable objects: {} - Remaining garbage: {} - Running threads: {}',
                     str(unreachable_objs), str(gc.garbage), str(active_count()))

        for obj in gc.garbage:
            for ref in find_referring_graphs(obj):
                ref.set_next(None)
                del ref  # remove local reference so the node can be deleted
            del obj  # remove local reference so the node can be deleted

        # Clear references held by gc.garbage
        logger.debug('Clearing gc garbage')
        del gc.garbage[:]

        mem_usage = py.memory_info()[0] / 2. ** 30
        cpu_usage = py.cpu_percent()
        logger.info('Instance name: "{}" - Memory usage: {:.3f} GB - CPU usage: {}',
                    str(args.status_name), mem_usage, str(cpu_usage))
        collected = None
        if args.stat_gc:
            collected = gc.collect()
            logger.debug("Garbage collector: collected %d objects." % collected)
        zero = datetime.datetime.utcnow()
        unixnow = calendar.timegm(zero.utctimetuple())
        db_wrapper.insert_usage(args.status_name, cpu_usage, mem_usage, collected, unixnow)
        time.sleep(args.statistic_interval)
Example #2
0
    def run_worker(self):
        logger.info("Starting webhook worker thread")

        while not terminate_mad.is_set():
            preparing_timestamp = int(time.time())

            # fetch data and create payload
            full_payload = self.__create_payload()

            # send our payload
            self.__send_webhook(full_payload)

            self.__last_check = preparing_timestamp
            time.sleep(self.__worker_interval_sec)

        logger.info("Stopping webhook worker thread")