From f273791e2337215a2a3bd7e3c46c23c69bcb1c7c Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期三, 23 八月 2023 12:12:16 +0800
Subject: [PATCH] bug修复

---
 huaxin_client/l1_client.py |   48 ++++++++++++++----------------------------------
 1 files changed, 14 insertions(+), 34 deletions(-)

diff --git a/huaxin_client/l1_client.py b/huaxin_client/l1_client.py
index ba3b01e..2a62460 100644
--- a/huaxin_client/l1_client.py
+++ b/huaxin_client/l1_client.py
@@ -5,7 +5,7 @@
 import threading
 import time
 
-from huaxin_client import socket_util
+from huaxin_client import socket_util, l1_subscript_codes_manager
 import xmdapi
 from huaxin_client import tool
 from huaxin_client.client_network import SendResponseSkManager
@@ -25,38 +25,6 @@
         if result_json.get("code") == 0:
             return True
     return False
-
-
-def get_level1_codes():
-    type_ = "get_level1_codes"
-    fdata = json.dumps(
-        {"type": type_, "data": {}})
-    msg = fdata.encode("utf-8")
-    # 鍙戦�佹秷鎭�
-    for i in range(3):
-        try:
-            sk = SendResponseSkManager.create_send_response_sk()
-            msg = socket_util.load_header(msg)
-            sk.sendall(msg)
-            result, header_str = socket_util.recv_data(sk)
-            # 璇诲彇浠g爜
-            result_json = json.loads(result)
-            if result_json["code"] == 0:
-                codes = result_json["data"]
-                codes_sh = []
-                codes_sz = []
-                for code in codes:
-                    if code.find("00") == 0:
-                        codes_sz.append(code.encode("utf-8"))
-                    else:
-                        codes_sh.append(code.encode("utf-8"))
-                print("鑾峰彇璁㈤槄鐩爣浠f暟閲忥細", len(codes_sh), len(codes_sz))
-                return codes_sh, codes_sz
-        except ConnectionResetError:
-            SendResponseSkManager.del_send_response_sk(type_)
-        except BrokenPipeError:
-            SendResponseSkManager.del_send_response_sk(type_)
-    return None, None
 
 
 class MdSpi(xmdapi.CTORATstpXMdSpi):
@@ -149,6 +117,9 @@
         #        pMarketDataField.AskVolume1, pMarketDataField.UpperLimitPrice, pMarketDataField.LowerLimitPrice))
 
 
+__latest_subscript_codes = set()
+
+
 def __upload_codes_info(pipe_l2, datas):
     if not tool.is_trade_time():
         return
@@ -158,6 +129,13 @@
         {"type": type_, "data": {"data": datas}})
     if pipe_l2 is not None:
         pipe_l2.send(fdata)
+    # 璁板綍鏂板鍔犵殑浠g爜
+    codes = set([x[0] for x in datas])
+    add_codes = codes - __latest_subscript_codes
+    __latest_subscript_codes.clear()
+    for c in codes:
+        __latest_subscript_codes.add(c)
+    logger_local_huaxin_l1.info(f"鏂板鍔犺闃呯殑浠g爜锛歿add_codes}")
 
 
 def run(pipe_l2):
@@ -166,7 +144,7 @@
     codes_sz = []
     for i in range(15):
         try:
-            codes_sh, codes_sz = get_level1_codes()
+            codes_sh, codes_sz = l1_subscript_codes_manager.get_codes()
             logger_local_huaxin_l1.info(f"鑾峰彇涓婅瘉锛屾繁璇佷唬鐮佹暟閲忥細sh-{len(codes_sh)} sz-{len(codes_sz)}")
             break
         except Exception as e:
@@ -204,6 +182,8 @@
             if len(level1_data_dict) < 1:
                 continue
             # 鏍规嵁娑ㄥ箙鎺掑簭
+
+            # (浠g爜,鐜颁环,娑ㄥ箙,閲�,鏃堕棿)
             list_ = [level1_data_dict[k] for k in level1_data_dict]
             flist = []
             for d in list_:

--
Gitblit v1.8.0