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