Exemple #1
0
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
Exemple #2
0
 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)
Exemple #3
0
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()
Exemple #4
0
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
Exemple #5
0
 def start(self):
     self._running = True
     self._last_check = pyyjj.nano_time()
     self.run()
Exemple #6
0
 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()