def _server_run_self(self, tid, server_info): """ 自定义服务处理函数,实现类可重载该函数加入自己的处理逻辑(例如进行实际业务处理) 注意:该函数每次只处理一次就应该返回,且应该实现异常处理 @param {int} tid - 线程id @param {object} server_info - _start_server_self函数生成的server_info信息 @returns {CResult} - 处理结果: result.code :'00000'-成功,其他值为失败 result.is_finished :处理是否已完成,True - 已处理完成,False - 未完成,需循环再处理 """ _result = CResult(code='00000') # 成功 _result.is_finished = False with ExceptionTool.ignored_cresult( _result, logger=self._logger, self_log_msg='[%s][NAME:%s]%s: ' % (self._server_log_prefix, self._server_name, _('service run error')), force_log_level=logging.ERROR): # 可在该部分实现自定义逻辑 pass # 返回处理结果 return _result
def _stop_server_predeal_self(self, tid, server_info): """ 自定义服务停止前处理函数,实现类可重载该函数加入自己的处理逻辑(例如结束子线程) @param {int} tid - 线程id @param {object} server_info - _start_server_self函数生成的server_info信息 @returns {CResult} - 处理结果: result.code :'00000'-成功,其他值为失败 result.is_finished :处理是否已完成,True - 已处理完成,False - 未完成,需循环再处理 """ _result = CResult(code='00000') # 成功 _result.is_finished = True with ExceptionTool.ignored_cresult( _result, logger=self._logger, self_log_msg='[%s-STOPING][NAME:%s]%s: ' % (self._server_log_prefix, self._server_name, _('stop service predeal error')), force_log_level=logging.ERROR): # 可在该部分实现自定义逻辑 pass # 返回处理结果 return _result
def _stop_server_predeal_self(self, tid, server_info): """ 自定义服务停止前处理函数,实现类可重载该函数加入自己的处理逻辑(例如结束子线程) 重载该函数,检查连接子线程是否均已结束,否则返回未完成,继续等待下一次检查 @param {int} tid - 线程id @param {object} server_info - _start_server_self函数生成的server_info信息 @returns {CResult} - 处理结果: result.code :'00000'-成功,其他值为失败 result.is_finished :处理是否已完成,True - 已处理完成,False - 未完成,需循环再处理 """ _result = CResult(code='00000') # 成功 _result.is_finished = True if len(self.__server_connect_thread_list.keys()) > 0: _result.is_finished = False return _result
def _server_run_self(self, tid, server_info): """ 自定义服务处理函数,实现类可重载该函数加入自己的处理逻辑(例如进行实际业务处理) 注意:该函数每次只处理一次就应该返回,且应该实现异常处理 @param {int} tid - 线程id @param {object} server_info - _start_server_self函数生成的server_info信息 @returns {CResult} - 处理结果: result.code :'00000'-成功,其他值为失败 result.is_finished :处理是否已完成,True - 已处理完成,False - 未完成,需循环再处理 """ _result = CResult(code='00000') # 成功 _result.is_finished = False with ExceptionTool.ignored_cresult( _result, logger=self._logger, self_log_msg='[%s][NAME:%s]%s: ' % ( self._server_log_prefix, self._server_name, _('service run error')), force_log_level=logging.ERROR ): # 可在该部分实现自定义逻辑 # 监听下一个连接请求 _accept_result = self._accept_one(self._server_opts, server_info) if _accept_result.is_success(): # 获取到一个连接,创建线程 self.__server_connect_thread_id = self.__server_connect_thread_id + 1 _thread_id = self.__server_connect_thread_id _new_thread = threading.Thread( target=self.__server_connect_thread_fun, args=(_thread_id, self._server_opts, _accept_result.net_info), name='Thread-ConnectDeal' + str(_thread_id) ) self.__server_connect_thread_add(_thread_id, _new_thread) _new_thread.setDaemon(True) _new_thread.start() elif _accept_result.code != '20407': # 不是超时的其他获取错误,打印信息 self._logger.log( logging.ERROR, "[%s][NAME:%s][EX:%s]%s: %s\n%s" % ( self._server_log_prefix, self._server_name, str(type(_accept_result.error)), _('accept net connection error'), _accept_result.msg, _accept_result.trace_str ) ) else: # 监听超时 pass # 返回处理结果 return _result