def listen_fastapi(*args, **kwargs): if "host" not in kwargs: kwargs["host"] = "0.0.0.0" if "port" not in kwargs: port = koala_config.get_config().fastapi_port kwargs["port"] = port _tcp_server.create_task(fastapi_serve(*args, **kwargs))
def run_server(): _config = koala_config.get_config() if _config.port: listen_rpc(_config.port) _tcp_server.create_task(rpc_message_dispatch.update_process_time()) _tcp_server.create_task(_socket_session_manager.run()) _tcp_server.create_task(_run_placement()) _tcp_server.create_task(_actor_manager.gc_loop()) _tcp_server.create_task(_actor_manager.calc_weight_loop()) _tcp_server.create_task(_try_update_load_loop()) _tcp_server.run()
def init_server(globals_dict: Dict, config_file_name: str = ""): # 需要注入config实现, 需要在初始化服务器之前注入 _config = koala_config.get_config() if config_file_name: _config.parse(config_file_name) init_logger(_config.log_name, _config.log_level, not _config.console_log) rpc_meta.build_meta_info(globals_dict) _init_internal_message_handler() _time_offset_of = 1626245658 # 随便找了一个时间戳, 可以减小request id序列化的大小 rpc_request_id.set_request_id_seed(int(time.time() - _time_offset_of))
def __init__(self): super().__init__() self._config = koala_config.get_config() api.set_pd_address(self._config.pd_address) self._lease_id = 0 self._server_id = 0 self._load = 0 self._last_heart_beat = time.time() self._recent_removed: Set[int] = set() self._recent_added: Set[int] = set() cache_size = ( self._config.pd_cache_size if self._config.pd_cache_size else 10 * 10000 ) self._lru_cache = pylru.lrucache(cache_size) pass
async def process_gateway_account_login(session: SocketSession, msg: object): global _config if not _config: _config = koala_config.get_config() request = cast(RpcMessage, msg) req = cast(RequestAccountLogin, request.meta) body = request.body body_message, check_sum = utils.message_check_sum( body, private_key=_config.private_key) logger.info( "process_gateway_account_login, SessionID:%s, OpenID:%s, ServerUD:%s , CheckSum:%s, %s" % (req.session_id, req.open_id, req.server_id, check_sum, body_message)) resp = ResponseAccountLogin() resp.session_id = req.session_id resp.actor_type = body_message.get("actor_type", "IPlayer") resp.actor_id = body_message.get("actor_id", "1") await session.send_message(RpcMessage(meta=resp))
async def on_new_session(self, msg: NotifyNewActorSession, body: bytes): global _config if not _config: _config = koala_config.get_config() await super(Player, self).on_new_session(msg, body) token_message = { "open_id": msg.open_id, "server_id": msg.server_id, "actor_type": "IPlayer", "actor_id": self.uid, } check = utils.message_compute_check_sum( token_message, private_key=_config.private_key ) token_message["check_sum"] = check meta = RequestSendMessageToSession() meta.session_id = msg.session_id token = utils.json_dumps(token_message) await self.send_message(RpcMessage(meta=meta, body=token))
def test_config_impl(): koala_config.set_config_impl(ConfigImpl) _config = koala_config.get_config() assert _config.__class__ == ConfigImpl