From ba3c289bded23aa069b64ccdee0f5225752cb08d Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 04 十二月 2023 11:06:39 +0800 Subject: [PATCH] 托管与云服务器通信通道修改 --- outside_api_command_manager.py | 37 +++++++++++++++++++++++++++---------- 1 files changed, 27 insertions(+), 10 deletions(-) diff --git a/outside_api_command_manager.py b/outside_api_command_manager.py index 348691d..015d5f4 100644 --- a/outside_api_command_manager.py +++ b/outside_api_command_manager.py @@ -11,13 +11,14 @@ # 蹇冭烦淇℃伅 from huaxin_client import socket_util from huaxin_client.client_network import SendResponseSkManager -from log_module.log import logger_debug, logger_system +from log_module.log import logger_system from utils import middle_api_protocol, tool MSG_TYPE_HEART = "heart" # 鍛戒护淇℃伅 MSG_TYPE_CMD = "cmd" +CLIENT_TYPE_COMMON = "common" CLIENT_TYPE_TRADE = "trade" # 蹇冭烦鏃堕棿闂撮殧 @@ -61,6 +62,7 @@ API_TYPE_SAVE_RUNNING_DATA = "save_running_data" # 淇濆瓨杩愯鏃舵暟鎹� API_TYPE_GET_CODE_POSITION_INFO = "get_code_position_info" # 鑾峰彇浠g爜鎸佷粨淇℃伅 API_TYPE_COMMON_REQUEST = "common_request" # 閫氱敤璇锋眰 + class ActionCallback(object): # 浜ゆ槗 @@ -127,7 +129,11 @@ # 浜ゆ槗鎸囦护绠$悊 # 浜ゆ槗鎸囦护绠$悊 class ApiCommandManager: + common_client_dict = {} trade_client_dict = {} + trade_client_count = 0 + common_client_count = 0 + _instance = None def __new__(cls, *args, **kwargs): @@ -159,12 +165,17 @@ return key, sk @classmethod - def init(cls, addr, port, trade_action_callback, trade_client_count=20): - cls.trade_client_dict = {} + def init(cls, addr, port, trade_action_callback, common_client_count=20, trade_client_count=15): + cls.common_client_dict.clear() + cls.common_client_count = common_client_count + cls.trade_client_dict.clear() cls.trade_client_count = trade_client_count cls.action_callback = trade_action_callback cls.ip_port = (addr, port) + for i in range(common_client_count): + result = cls.__create_and_run_client(CLIENT_TYPE_COMMON, i) + cls.common_client_dict[result[0]] = result[1] for i in range(trade_client_count): result = cls.__create_and_run_client(CLIENT_TYPE_TRADE, i) cls.trade_client_dict[result[0]] = result[1] @@ -234,9 +245,6 @@ cls.action_callback.OnGetCodePositionInfo(client_id, request_id, data) elif content_type == API_TYPE_COMMON_REQUEST: cls.action_callback.OnCommonRequest(client_id, request_id, data) - - - except Exception as e: logging.exception(e) pass @@ -248,10 +256,12 @@ except Exception as e: logging.exception(e) - if _type == CLIENT_TYPE_TRADE: + if _type == CLIENT_TYPE_COMMON: + if client_id in cls.common_client_dict: + cls.common_client_dict.pop(client_id) + elif _type == CLIENT_TYPE_TRADE: if client_id in cls.trade_client_dict: cls.trade_client_dict.pop(client_id) - print("pop trade client", client_id) try: sk.close() except: @@ -266,7 +276,10 @@ sk.send(socket_util.load_header(json.dumps({"type": "heart", "client_id": client_id}).encode('utf-8'))) # print("蹇冭烦淇℃伅鍙戦�佹垚鍔�", client_id) except Exception as e: - if _type == CLIENT_TYPE_TRADE: + if _type == CLIENT_TYPE_COMMON: + if client_id in cls.common_client_dict: + cls.common_client_dict.pop(client_id) + elif _type == CLIENT_TYPE_TRADE: if client_id in cls.trade_client_dict: cls.trade_client_dict.pop(client_id) try: @@ -294,8 +307,12 @@ logger_system.info(f"outside_api __maintain_client 绾跨▼ID:{tool.get_thread_id()}") while True: try: + if len(cls.common_client_dict) < cls.common_client_count: + for i in range(cls.common_client_count - len(cls.common_client_dict)): + result = cls.__create_and_run_client(CLIENT_TYPE_COMMON) + cls.common_client_dict[result[0]] = result[1] + if len(cls.trade_client_dict) < cls.trade_client_count: - print("__maintain_client", CLIENT_TYPE_TRADE, cls.trade_client_count - len(cls.trade_client_dict)) for i in range(cls.trade_client_count - len(cls.trade_client_dict)): result = cls.__create_and_run_client(CLIENT_TYPE_TRADE) cls.trade_client_dict[result[0]] = result[1] -- Gitblit v1.8.0