Exemple #1
0
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))
Exemple #2
0
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()
Exemple #3
0
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))
Exemple #4
0
 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
Exemple #5
0
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))
Exemple #6
0
    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))
Exemple #7
0
def test_config_impl():
    koala_config.set_config_impl(ConfigImpl)
    _config = koala_config.get_config()
    assert _config.__class__ == ConfigImpl