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