Beispiel #1
0
    def __init__(self,
                 service_group,
                 port,
                 jid,
                 service_version,
                 servie_mgr_ip=None,
                 servie_mgr_port=None,
                 default_load=1,
                 load_getter=None):
        self.service_group = service_group
        self.port = port
        self.jid = jid
        self.service_version = service_version
        self.default_load = default_load
        self.current_load = default_load
        self.load_getter = load_getter
        self.process_name = sys.argv[0]
        self.running = False

        if not servie_mgr_ip:
            servie_mgr_ip = ParamCacher().sm_ip
        if not servie_mgr_port:
            servie_mgr_port = SM_UDP_PORT

        super(ServiceAdvertiser, self).__init__(servie_mgr_ip, servie_mgr_port,
                                                self.get_msg)
Beispiel #2
0
 def _start_redis_client(self):
     """
     启动redis client
     :return:
     """
     rc = redis_client.RedisClient.instance(
         ArgumentParser().args.redis_ip,
         ArgumentParser().args.redis_port,
         ArgumentParser().args.redis_db)
     ParamCacher().redis_client = rc
Beispiel #3
0
 def _start_orm(self):
     """
     orm初始化
     :return:
     """
     orm_engine = OrmEngine(ArgumentParser().args.db_host,
                            ArgumentParser().args.db_port,
                            ArgumentParser().args.db_name,
                            ArgumentParser().args.db_user,
                            ArgumentParser().args.db_password)
     ParamCacher().orm_engine = orm_engine
Beispiel #4
0
 def _start_mysqldb(self):
     """
     mysql db引擎开启
     :return:
     """
     db_instance = DBInstance(db_host=ArgumentParser().args.db_host,
                              db_port=ArgumentParser().args.db_port,
                              db_name=ArgumentParser().args.db_name,
                              db_username=ArgumentParser().args.db_user,
                              db_password=ArgumentParser().args.db_password,
                              err_file=logger.fatal)
     db_instance.init()
     ParamCacher().db_instance = db_instance
Beispiel #5
0
    def stop_service(self, *args):
        """
        退出服务
        :param args: 参数
        :return:
        """
        # 保存数据
        self.update()

        self.exit()

        if not self.is_sm:
            self.adv.notify_shutdown()

            result = stop_service(ParamCacher().sm_rpc,
                                  ArgumentParser().args.service_id)
            assert result['result'] == error_code.ERROR_SUCCESS
        [thread.stop() for thread in self.thread_ls]
Beispiel #6
0
    def __init__(self,
                 service_type,
                 service_version,
                 is_sm=False,
                 db_update_dir_path=None,
                 use_mysqldb=False,
                 use_orm=False,
                 use_redis=False):
        self.service_type = service_type
        self.service_version = service_version
        self.thread_ls = []
        self.is_sm = is_sm
        self.db_update_dir_path = db_update_dir_path
        self.use_mysqldb = use_mysqldb
        self.use_orm = use_orm
        self.use_redis = use_redis

        self.adv = None
        self.sm_rpc = None

        logger.init_log(self.service_type, self.service_type)
        ExitHandler().add_exit_handler(self.stop_service)

        arg_parser = ArgumentParser()
        p = arg_parser.get_argparser()

        self.add_cmd_opts(p)

        p.add_argument('--service_type',
                       default=service_type,
                       type=str,
                       help="The type of the service")
        p.add_argument('--service_version',
                       default=use_redis,
                       type=str,
                       help="The version of the service")
        p.add_argument('--is_sm',
                       default=is_sm,
                       type=bool,
                       help="Whether it is the service manager")
        p.add_argument('--db_update_dir_path',
                       default=db_update_dir_path,
                       type=str,
                       help="The dir for db update use")
        p.add_argument('--use_mysqldb',
                       default=use_mysqldb,
                       type=parser_boolean,
                       help="Whether to use the mysqldb lib")
        p.add_argument('--use_orm',
                       default=use_orm,
                       type=parser_boolean,
                       help="Whether to use the orm db lib")
        p.add_argument('--use_redis',
                       default=use_redis,
                       type=parser_boolean,
                       help="Whether to use the redis cache")

        p.add_argument('--logger_mask',
                       default='0000',
                       type=str,
                       help="The logger mask em es fm fs")

        IpFinder().is_extranet = arg_parser.args.is_extranet

        if not self.is_sm:
            SMParamParser(service_type=self.service_type,
                          sm_rpc=ParamCacher().sm_rpc,
                          arg_parser=p,
                          rdm_port_fun=get_random_port)

            self.add_cmd_opts_after_sm(p)

        if self.db_update_dir_path:
            self._db_update()
        if self.use_mysqldb:
            self._start_mysqldb()
        if self.use_redis:
            self._start_redis_client()

        args = arg_parser.args
        arg_parser.will_change = False

        self.init(args)
        logger.set_logger_level(args.logger_level)