Administrator
2023-10-16 5ed30c03ddfedd4cf79cd8fea9fc45b05821d898
outside_api_command_manager.py
@@ -11,7 +11,8 @@
# 心跳信息
from huaxin_client import socket_util
from huaxin_client.client_network import SendResponseSkManager
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"
# 命令信息
@@ -50,7 +51,9 @@
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"  # 从数据服务器拉取数据
class ActionCallback(object):
    # 交易
@@ -87,6 +90,12 @@
    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
# 交易指令管理
# 交易指令管理
@@ -102,7 +111,7 @@
    @classmethod
    def __create_client(cls, client_type, rid):
        client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 生成socket,连接server
        client.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, True)
        # client.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, True)
        # client.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 60 * 1000, 30 * 1000))
        client.connect(cls.ip_port)
        client.send(SendResponseSkManager.format_response(
@@ -180,6 +189,12 @@
                            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)
                    except Exception as e:
                        logging.exception(e)
                        pass
@@ -206,12 +221,9 @@
    def __heart_beats(cls, _type, client_id, sk):
        while True:
            try:
                sk.send(SendResponseSkManager.format_response(
                    json.dumps({"type": "heart", "client_id": client_id}).encode('utf-8')))
                sk.send(socket_util.load_header(json.dumps({"type": "heart", "client_id": client_id}).encode('utf-8')))
                # print("心跳信息发送成功", client_id)
            except Exception as e:
                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)
@@ -237,6 +249,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: