def register_client(ctx, request, is_writer): name = request['name'] pid = request['pid'] result = { 'success': False, 'error_msg': '', 'memory_msg_file': ctx._page_service.memory_msg_file(), 'file_size': ctx._page_service.memory_msg_file_size(), 'hash_code': -1 } if name in ctx._client_info: result['error_msg'] = 'client ' + name + ' already exists' else: hash_code = ctx._page_service.register_client(name, pid, is_writer) if not pid in ctx._client_processes: ctx._client_processes[pid] = {} ctx._client_processes[pid]['process'] = psutil.Process(pid) ctx._client_processes[pid]['client_info'] = [] ctx._client_processes[pid]['client_info'].append(name) ctx._client_info[name] = { 'journals': [], 'reg_nano': pyyjj.nano_time(), 'is_writing': is_writer, 'is_strategy': False, 'rid_start': -1, 'rid_end': -1, 'pid': pid, 'hash_code': hash_code } result['success'] = True result['hash_code'] = hash_code return result
def format(self, record): time = pyyjj.nano_time() nano = time % 1000000000 record.loglevel = self.format_level(record.levelname.lower()) record.nanotime = '{}.{:09d}'.format( pyyjj.parse_nano(time, LOG_DATE_FORMAT), nano) record.tid = pyyjj.thread_id() return logging.Formatter.format(self, record)
def ping(args, logger): base_dir = os.getenv('KF_HOME') emitter_socket = create_socket(base_dir, 'emitter', nnpy.PUSH) notice_socket = create_socket(base_dir, 'notice', nnpy.SUB) notice_socket.setsockopt(level=nnpy.SUB, option=nnpy.SUB_SUBSCRIBE, value='') latency = [] for t in range(args.times): start = pyyjj.nano_time() sent_bytes = emitter_socket.send(args.message) rsp_data = notice_socket.recv() end = pyyjj.nano_time() latency.append(end - start) recv_bytes = len(rsp_data) pong_messsage = rsp_data.decode('utf-8') print('[{}] {}/{} bytes time={} ns'.format(t + 1, sent_bytes, recv_bytes, latency[-1])) logger.debug('ping: %s, pong: %s', args.message, pong_messsage) print('round-trip min/avg/max/stddev = {:.0f}/{:.0f}/{:.0f}/{:.0f} ns'.format( numpy.min(latency),numpy.mean(latency),numpy.max(latency),numpy.std(latency) )) emitter_socket.close() notice_socket.close()
def create_logger(name, level): base_dir = os.getenv('KF_HOME') log_archive_folder = os.path.join(base_dir, 'log', 'archive') if not os.path.exists(log_archive_folder): os.makedirs(log_archive_folder) time = pyyjj.nano_time() log_dateext = pyyjj.parse_nano(time, LOG_FILE_DATEEXT_FORMAT) log_path = os.path.join(log_archive_folder, '{}_py_{}.log'.format(name, log_dateext)) file_handler = logging.FileHandler(log_path) file_handler.setFormatter(KungfuFormatter(LOG_MSG_FORMAT)) console_handler = WinConsoleHandler() if platform.system( ) == 'Windows' else UnixConsoleHandler() logger = logging.getLogger(name) logger.setLevel(LOG_LEVELS[level]) logger.addHandler(file_handler) logger.addHandler(console_handler) return logger
def start(self): self._running = True self._last_check = pyyjj.nano_time() self.run()
def run_tasks(self): time_passed = pyyjj.nano_time() - self._last_check if time_passed > self._check_interval: self._logger.debug('Run system tasks') kfs.run_tasks(self) self._last_check = pyyjj.nano_time()