Administrator
2023-11-24 d6b6be5eb2ae00a8ccf46bd7d53cd7d0c1e59c72
outside_api_command_manager.py
@@ -11,8 +11,8 @@
# 心跳信息
from huaxin_client import socket_util
from huaxin_client.client_network import SendResponseSkManager
from log_module.log import logger_debug
from utils import middle_api_protocol
from log_module.log import logger_debug, logger_system
from utils import middle_api_protocol, tool
MSG_TYPE_HEART = "heart"
# 命令信息
@@ -33,6 +33,7 @@
OPERRATE_SET = 1  # 设置
OPERRATE_DELETE = 2  # 删除
OPERRATE_GET = 3  # 获取
OPERRATE_ADD = 4  # 新增
# 代码名单类型
CODE_LIST_WHITE = "white"
@@ -44,6 +45,7 @@
API_TYPE_TRADE = "trade"  # 交易
API_TYPE_TRADE_STATE = "trade_state"  # 交易状态
API_TYPE_TRADE_MODE = "trade_mode"  # 交易模式
API_TYPE_SELL_RULE = "sell_rule"  # 卖出规则
API_TYPE_CODE_LIST = "code_list"  # 代码名单
API_TYPE_EXPORT_L2 = "export_l2"  # 导出L2数据
API_TYPE_INIT = "init"  # 初始化
@@ -51,7 +53,13 @@
API_TYPE_CODE_ATRRIBUTE = "code_attribute"  # 代码属性
API_TYPE_CODE_TRADE_STATE = "code_trade_state"  # 代码交易状态
API_TYPE_GET_ENV = "get_env"  # 获取环境信息
API_TYPE_SYNC_L1_TARGET_CODES = "sync_l1_subscript_codes"  # 同步L1需要订阅的代码
API_TYPE_SYSTEM_LOG = "system_log"  # 系统日志
API_TYPE_GET_FROM_DATA_SERVER = "get_from_data_server"  # 从数据服务器拉取数据
API_TYPE_CODE_TRADE_INFO = "code_trade_info"  # 代码交易信息
API_TYPE_CODE_L2_LISTEN_ACTIVE_COUNT = "l2_listen_active_count"  # L2有效监听数量
API_TYPE_SAVE_RUNNING_DATA = "save_running_data"  # 保存运行时数据
API_TYPE_GET_CODE_POSITION_INFO = "get_code_position_info"  # 获取代码持仓信息
class ActionCallback(object):
    # 交易
@@ -64,6 +72,10 @@
    # 交易模式
    def OnTradeMode(self, client_id, request_id, data):
        pass
    # 卖出规则
    def OnSellRule(self, client_id, request_id, data):
        pass
    # 代码名单
@@ -86,6 +98,25 @@
        pass
    def OnGetEnvInfo(self, client_id, request_id, data):
        pass
    def OnSyncL2SubscriptCodes(self, client_id, request_id):
        pass
    def OnGetFromDataServer(self, client_id, request_id, data):
        pass
    # 代码的交易信息
    def OnGetCodeTradeInfo(self, client_id, request_id, data):
        pass
    def OnGetActiveListenCount(self, client_id, request_id):
        pass
    def OnSaveRunningData(self, client_id, request_id):
        pass
    def OnGetCodePositionInfo(self, client_id, request_id, data):
        pass
@@ -167,6 +198,8 @@
                            cls.action_callback.OnTradeState(client_id, request_id, data)
                        elif content_type == API_TYPE_TRADE_MODE:
                            cls.action_callback.OnTradeMode(client_id, request_id, data)
                        elif content_type == API_TYPE_SELL_RULE:
                            cls.action_callback.OnSellRule(client_id, request_id, data)
                        elif content_type == API_TYPE_CODE_LIST:
                            cls.action_callback.OnCodeList(client_id, request_id, data)
                        elif content_type == API_TYPE_EXPORT_L2:
@@ -181,6 +214,21 @@
                            cls.action_callback.OnGetCodeTradeState(client_id, request_id, data)
                        elif content_type == API_TYPE_GET_ENV:
                            cls.action_callback.OnGetEnvInfo(client_id, request_id, data)
                        elif content_type == API_TYPE_SYNC_L1_TARGET_CODES:
                            cls.action_callback.OnSyncL2SubscriptCodes(client_id, request_id)
                        elif content_type == API_TYPE_SYSTEM_LOG:
                            cls.action_callback.OnSystemLog(client_id, request_id, data)
                        elif content_type == API_TYPE_GET_FROM_DATA_SERVER:
                            cls.action_callback.OnGetFromDataServer(client_id, request_id, data)
                        elif content_type == API_TYPE_CODE_TRADE_INFO:
                            cls.action_callback.OnGetCodeTradeInfo(client_id, request_id, data)
                        elif content_type == API_TYPE_CODE_L2_LISTEN_ACTIVE_COUNT:
                            cls.action_callback.OnGetActiveListenCount(client_id, request_id)
                        elif content_type == API_TYPE_SAVE_RUNNING_DATA:
                            cls.action_callback.OnSaveRunningData(client_id, request_id)
                        elif content_type == API_TYPE_GET_CODE_POSITION_INFO:
                            cls.action_callback.OnGetCodePositionInfo(client_id, request_id, data)
                    except Exception as e:
                        logging.exception(e)
                        pass
@@ -210,9 +258,6 @@
                sk.send(socket_util.load_header(json.dumps({"type": "heart", "client_id": client_id}).encode('utf-8')))
                # print("心跳信息发送成功", client_id)
            except Exception as e:
                logging.error("错误")
                print("心跳信息发送失败", _type, client_id)
                logging.exception(e)
                if _type == CLIENT_TYPE_TRADE:
                    if client_id in cls.trade_client_dict:
                        cls.trade_client_dict.pop(client_id)
@@ -238,6 +283,7 @@
    @classmethod
    def __maintain_client(cls):
        logger_system.info(f"outside_api __maintain_client 线程ID:{tool.get_thread_id()}")
        while True:
            try:
                if len(cls.trade_client_dict) < cls.trade_client_count: