def __init__(self): Entity.__init__(self, "session_mana" + get_worker_id(), tag="web_session", broadcast=True) self._sessions = dict() # 用保存当前进程上的session的id与其对象之间的关系 self._workerid = get_worker_id() # 当前所属进程的id
def __init__(self, node_name, log_infos): """ :param node_name: 当前节点的名字 :param log_infos: 需要监控的日志 {"name" : "/home/fjs/fjs.log"} 名字到路径的字典 """ Entity.__init__(self, NODE_NAME) self._node_name = node_name self._log_infos = log_infos
def __init__(self, session_id, manager): Entity.__init__(self, session_id) self._attrs = dict() # 保存属性 self._last_time = get_time() # session的上次访问时间 self._session_manager = manager # 其所属的manager对象 self._timeout = DEFAULT_TIMEOUT # 超时时间 # 通过这个定时器来定时的检测sessoion的上次访问时间,如果超时了,那么将会移除session self._check_timer = gevent.get_hub().loop.timer(DEFAULT_TIMEOUT, DEFAULT_TIMEOUT) self._check_timer.start(self._check) # 启动超时的检测定时器
def release(self): """ 主要是扩展了从session管理器中移除当前session的逻辑,以及超时检测定时器的关闭,移除设置的一些值 这个也是一个远程方法,用于显示的调用移除session对象 """ Entity.release(self) self._session_manager.remove_session(self.id) self._check_timer.stop() self._attrs.clear() self._timer = None self._manager = None
def __init__(self, session_id, manager): Entity.__init__(self, session_id) self._attrs = dict() # 保存属性 self._last_time = get_time() # session的上次访问时间 self._session_manager = manager # 其所属的manager对象 self._timeout = DEFAULT_TIMEOUT # 超时时间 # 通过这个定时器来定时的检测sessoion的上次访问时间,如果超时了,那么将会移除session self._check_timer = gevent.get_hub().loop.timer( DEFAULT_TIMEOUT, DEFAULT_TIMEOUT) self._check_timer.start(self._check) # 启动超时的检测定时器
def __init__(self, mongo_info): """ :param mongo_info: {"ip": "", "port": 123, "db": "", "account": "", "pwd": ""} :return: """ Entity.__init__(self, STATE_ENTITY_NAME, broadcast=True) self._data = dict() # 用于记录entity的调用信息 entity_id -> InvokeInfo if mongo_info is not None: self._mongo_info = mongo_info self._timer = None self._last_day = self.get_today_day_str() self._init_mongo()
def __init__(self, log_path): """ 远程会要求log节点进程创建一个这种entity,用于远程通过rpc方法来获取监控的日志的数据 注意:为了防止一些意外,会启动一个定时器,检测上次访问时间,如果很长时间都没有访问了,那么会自动 停止LogGetter对象,然后清除当前entity,主要为了在一些异常情况下能够关闭开启了的子进程,释放占用的资源 :param log_path: 日志的路径 """ Entity.__init__(self, _create_id()) self._log_path = log_path self._getter = LogGetter(log_path) self._last_time = get_time() # 用于记录上一次访问时间 self._check_timer = gevent.get_hub().loop.timer(40, 40) self._check_timer.start(self._check) # 用于检测上次访问时间的timer
def __init__(self, name, tag): """ 对于tag管理器,虽然在创建的时候会向config进程注册当前entity,但是并不需要以后刻意的向config进程来销毁当前 tag管理器的注册,因为config部分在掉哟功能当前entity方法的时候,如果出现了异常,会自动将这个enttiy的stub直接 移除 :param name: 因为是一个bean,所以需要设置一个名字 :param tag: 需要管理的entity的tag的名字 """ Bean.__init__(self, name) Entity.__init__(self, str(uuid.uuid4())) # 对于entity的id,这里创建一个唯一的就行 self._tag = tag # 需要维护的entity的tag值 self._stubs = [] # 从config上面获取的指定的tag的entity将会保存到这里来 self._status = False # 如果进程信息有变动,将会将这个标志为设置为True # 用于向config进程注册当前tag管理器 self.config_stub.add_tag_manager(self._id, self._manager.address, self._tag)
def __init__(self, log_path, content, time_out=10): """ :param log_path: 需要grep的文件路径,这里最好是使用绝对路径 :param content: 需要grep的内容 :param time_out: 子进程超时时间,防止grep消耗太多 """ Entity.__init__(self, _create_id()) self._log_path = log_path self._time_out = time_out self._content = content self._last_time = get_time() # 记录上次访问时间 # 创建一个定时器来检查上次访问时间,保证当前Entity一定会被释放 self._check_timer = gevent.get_hub().loop.timer(20, 20) self._check_timer.start(self._check) self._grep = Grep(log_path, content, time_out) # 代理这个的方法来获取grep的数据
def __init__(self): Entity.__init__(self, LOG_CENTER_NAME, broadcast=True) self._nodes = {} self._ping_timer = gevent.get_hub().loop.timer(CHECK_TIME, CHECK_TIME) self._ping_timer.start(self._do_ping) # 这个用于定期的检查node节点是否还存活 self._init_from_persist()