From 014f96bdacd3c925bd60bffeae649ee4fe5fb6b2 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 21 十一月 2024 14:15:46 +0800 Subject: [PATCH] bug修复 --- third_data/code_plate_key_manager.py | 63 +++++++++++++++++++++++-------- 1 files changed, 47 insertions(+), 16 deletions(-) diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py index c4a3814..7a08121 100644 --- a/third_data/code_plate_key_manager.py +++ b/third_data/code_plate_key_manager.py @@ -18,7 +18,7 @@ from log_module import async_log_util from db import redis_manager_delegate as redis_manager -from log_module.log import logger_kpl_block_can_buy, logger_kpl_jx_out +from log_module.log import logger_kpl_block_can_buy, logger_kpl_jx_out, logger_kpl_jx_in, logger_debug from third_data.kpl_util import KPLPlatManager from trade import trade_manager, l2_trade_util, trade_constant @@ -40,7 +40,10 @@ def __new__(cls, *args, **kwargs): if not cls.__instance: cls.__instance = super(KPLCodeJXBlockManager, cls).__new__(cls, *args, **kwargs) - cls.__load_data() + try: + cls.__load_data() + except Exception as e: + logger_debug.exception(e) return cls.__instance @classmethod @@ -330,8 +333,10 @@ # 瀹炴椂寮�鐩樺暒甯傚満鏁版嵁 class RealTimeKplMarketData: - # 绮鹃�夊墠5 - top_5_reason_list = [] + # 娴佸叆缂撳瓨 + top_in_list_cache = [] + # 娴佸嚭缂撳瓨 + top_out_list_cache = [] # 琛屼笟鍓�5 top_5_industry_list = [] # @@ -342,9 +347,11 @@ __LimitUpCodesPlateKeyManager = LimitUpCodesPlateKeyManager() __KPLPlatManager = KPLPlatManager() # 绮鹃�夋祦鍏ュ墠鍑� - __top_jx_blocks = set() + __top_jx_blocks = [] # 绮鹃�夋祦鍑哄墠鍑� - __top_jx_out_blocks = set() + __top_jx_out_blocks = [] + # 绮鹃�夋澘鍧楁祦鍏ラ噾棰� + __jx_blocks_in_money_dict = {} @classmethod def set_market_jingxuan_blocks(cls, datas): @@ -360,18 +367,31 @@ # break # blocks.add(data[1]) # cls.__top_jx_blocks = blocks + cls.top_in_list_cache = datas blocks = set() + count = 0 + fblock_money = {} for data in datas: + cls.__jx_blocks_in_money_dict[data[1]] = data[3] if data[1] in constant.KPL_INVALID_BLOCKS: continue - if data[3] < 1e8: + if data[3] < 5e7: continue - blocks.add(data[1]) - if len(blocks) >= 10: + # 杩囨护鍑烘潵涓哄悓涓�涓澘鍧楀氨鍙畻1涓暟閲� + fb = BlockMapManager().filter_blocks({data[1]}) + if blocks & fb: + continue + for b in fb: + fblock_money[b] = data[3] + blocks |= fb + count += 1 + if count >= 10: break - blocks.add(kpl_util.filter_block(data[1])) # 璁板綍绮鹃�夋祦鍑烘棩蹇� - cls.__top_jx_blocks = BlockMapManager().filter_blocks(blocks) + async_log_util.info(logger_kpl_jx_in, f"鍘熸暟鎹細{datas[:20]} 鏉垮潡锛歿blocks}") + blocks = list(blocks) + blocks.sort(key=lambda x: fblock_money.get(x), reverse=True) + cls.__top_jx_blocks = blocks @classmethod def set_market_jingxuan_out_blocks(cls, datas): @@ -380,20 +400,27 @@ @param datas: @return: """ + cls.top_out_list_cache = datas + count = 0 blocks = set() for data in datas: + cls.__jx_blocks_in_money_dict[data[1]] = data[3] if data[1] in constant.KPL_INVALID_BLOCKS: continue - if data[3] > -1e8: + if data[3] > -5e7: # 杩囨护5鍗冧竾浠ヤ笂鐨� break - blocks.add(data[1]) - if len(blocks) >= 10: + # 杩囨护鍑烘潵涓哄悓涓�涓澘鍧楀氨鍙畻1涓暟閲� + fb = BlockMapManager().filter_blocks({data[1]}) + if blocks & fb: + continue + blocks |= fb + count += 1 + if count >= 10: break - blocks.add(kpl_util.filter_block(data[1])) # 璁板綍绮鹃�夋祦鍑烘棩蹇� async_log_util.info(logger_kpl_jx_out, f"鍘熸暟鎹細{datas[:10]} 鏉垮潡锛歿blocks}") - cls.__top_jx_out_blocks = BlockMapManager().filter_blocks(blocks) + cls.__top_jx_out_blocks = list(blocks) @classmethod def get_top_market_jingxuan_blocks(cls): @@ -445,6 +472,10 @@ else: return False, None + @classmethod + def get_jx_block_in_money(cls, block): + return cls.__jx_blocks_in_money_dict.get(block) + # 浠g爜鍘嗗彶娑ㄥ仠鍘熷洜涓庢澘鍧楃鐞� class CodesHisReasonAndBlocksManager: -- Gitblit v1.8.0