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