From 0e85acaabcd7b79ef5dcbd7bf4c03c0c9de1d363 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 15 八月 2023 15:05:56 +0800
Subject: [PATCH] ++++++++++++++++ bug修复-
---
third_data/code_plate_key_manager.py | 59 +++++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 41 insertions(+), 18 deletions(-)
diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py
index 786aeee..8e36034 100644
--- a/third_data/code_plate_key_manager.py
+++ b/third_data/code_plate_key_manager.py
@@ -6,11 +6,11 @@
import json
import constant
-from db.redis_manager import RedisUtils
+from db.redis_manager_delegate import RedisUtils
from third_data import kpl_block_util
from utils import global_util, tool
from log_module import log
-from db import redis_manager
+from db import redis_manager_delegate as redis_manager
from log_module.log import logger_kpl_limit_up, logger_kpl_block_can_buy, logger_kpl_debug
from third_data.kpl_util import KPLPlatManager
@@ -48,16 +48,38 @@
# 寮�鐩樺暒绂佹浜ゆ槗鏉垮潡绠$悊
class KPLPlateForbiddenManager:
__redisManager = redis_manager.RedisManager(3)
+ __kpl_forbidden_plates_cache = set()
- def __get_redis(self):
- return self.__redisManager.getRedis()
+ __instance = None
+
+ def __new__(cls, *args, **kwargs):
+ if not cls.__instance:
+ cls.__instance = super(KPLPlateForbiddenManager, cls).__new__(cls, *args, **kwargs)
+ cls.__load_datas()
+ return cls.__instance
+
+ @classmethod
+ def __load_datas(cls):
+ __redis = cls.__get_redis()
+ try:
+ __kpl_forbidden_plates_cache = RedisUtils.smembers(__redis, "kpl_forbidden_plates")
+ finally:
+ RedisUtils.realse(__redis)
+
+ @classmethod
+ def __get_redis(cls):
+ return cls.__redisManager.getRedis()
def save_plate(self, plate):
+ self.__kpl_forbidden_plates_cache.add(plate)
RedisUtils.sadd(self.__get_redis(), "kpl_forbidden_plates", plate)
RedisUtils.expire(self.__get_redis(), "kpl_forbidden_plates", tool.get_expire())
def list_all(self):
return RedisUtils.smembers(self.__get_redis(), "kpl_forbidden_plates")
+
+ def list_all_cache(self):
+ return self.__kpl_forbidden_plates_cache
class LimitUpCodesPlateKeyManager:
@@ -217,7 +239,7 @@
# 鍚庢帓鎵嶈兘鎸傚崟
return 0, "韬綅涓嶄负鍚庢帓"
- forbidden_plates = cls.__KPLPlateForbiddenManager.list_all()
+ forbidden_plates = cls.__KPLPlateForbiddenManager.list_all_cache()
if key in forbidden_plates:
return 0, "涓嶄拱璇ユ澘鍧�"
@@ -236,7 +258,7 @@
def is_in_top(cls, keys):
reasons = cls.get_can_buy_key_set()
log.logger_kpl_debug.debug("甯傚満娴佸叆鍓�5:{}", reasons)
- forbidden_plates = cls.__KPLPlateForbiddenManager.list_all()
+ forbidden_plates = cls.__KPLPlateForbiddenManager.list_all_cache()
reasons = reasons - forbidden_plates
temp_set = keys & reasons
log.logger_kpl_debug.debug("甯傚満娴佸叆鍓�5鍖归厤缁撴灉:{}", temp_set)
@@ -323,8 +345,8 @@
k1 = set()
if code in LimitUpCodesPlateKeyManager.today_total_limit_up_reason_dict:
k1 = {LimitUpCodesPlateKeyManager.today_total_limit_up_reason_dict[code]}
- # 鍔犺浇浠婃棩鍘嗗彶鍘熷洜
- k11 = RedisUtils.smembers(self.__get_redis(), f"kpl_limit_up_reason_his-{code}")
+ # 鍔犺浇浠婃棩鍘嗗彶鍘熷洜,鏆傛椂涓嶉渶瑕佸巻鍙插師鍥犱簡
+ k11 = set() # RedisUtils.smembers(self.__get_redis(), f"kpl_limit_up_reason_his-{code}")
k2 = self.__CodesPlateKeysManager.get_history_limit_up_reason(code)
if k2 is None:
k2 = set()
@@ -361,7 +383,6 @@
__TargetCodePlateKeyManager = TargetCodePlateKeyManager()
__LimitUpCodesPlateKeyManager = LimitUpCodesPlateKeyManager()
__CodesHisReasonAndBlocksManager = CodesHisReasonAndBlocksManager()
-
# 鑾峰彇鍙互涔扮殑鏉垮潡
# current_limit_up_datas: 浠婃棩瀹炴椂娑ㄥ仠
@@ -417,18 +438,20 @@
can_buy_blocks = []
for block in keys:
is_top_8_record, top_8_record = kpl_block_util.is_record_top_block(code, block, limit_up_record_datas,
- yesterday_current_limit_up_codes, 20)
+ yesterday_current_limit_up_codes, 50)
is_top_4_current, top_4_current = kpl_block_util.is_current_top_block(code, block, current_limit_up_datas,
- yesterday_current_limit_up_codes, 10)
+ yesterday_current_limit_up_codes, 50)
is_top_4 = is_top_8_record and is_top_4_current
- msg_list.append(f"\n瀹炴椂top10: {top_4_current}(娑ㄥ仠鏁伴噺锛歿len(current_limit_up_datas)})")
- msg_list.append(f"鍘嗗彶top20: {top_8_record}")
+ msg_list.append(f"\n瀹炴椂top10(娑ㄥ仠鏁伴噺锛歿len(current_limit_up_datas)})")
+ msg_list.append(f"鍘嗗彶top20(娑ㄥ仠鏁伴噺锛歿len(top_8_record)})")
# 鑾峰彇涓绘澘瀹炴椂韬綅,鍓旈櫎楂樹綅鏉�
current_shsz_rank = kpl_block_util.get_code_current_rank(code, block, current_limit_up_datas,
- code_limit_up_reason_dict, yesterday_current_limit_up_codes, shsz=True)
+ code_limit_up_reason_dict,
+ yesterday_current_limit_up_codes, shsz=True)
record_shsz_rank = kpl_block_util.get_code_record_rank(code, block, limit_up_record_datas,
- code_limit_up_reason_dict, yesterday_current_limit_up_codes, shsz=True)
+ code_limit_up_reason_dict,
+ yesterday_current_limit_up_codes, shsz=True)
# 鑾峰彇涓绘澘鍘嗗彶韬綅
if is_top_4:
pen_limit_up_codes = kpl_block_util.get_shsz_open_limit_up_codes(code, block, limit_up_record_datas,
@@ -538,9 +561,9 @@
# ---------------------------------鍔犺浇宸茬粡涓嬪崟/鎴愪氦鐨勪唬鐮佷俊鎭�------------start-------------
# match_reasons = match_limit_up_result.keys()
# 鍒ゆ柇鍖归厤鍒扮殑鍘熷洜鏄惁宸茬粡鏈変笅鍗�/涔板叆鎴愬姛鐨勪唬鐮�
- codes_delegate = set(trade_manager.get_codes_by_trade_states(
+ codes_delegate = set(trade_manager.CodesTradeStateManager().get_codes_by_trade_states_cache(
{trade_manager.TRADE_STATE_BUY_DELEGATED, trade_manager.TRADE_STATE_BUY_PLACE_ORDER}))
- codes_success = set(trade_manager.get_codes_by_trade_states(
+ codes_success = set(trade_manager.CodesTradeStateManager().get_codes_by_trade_states_cache(
{trade_manager.TRADE_STATE_BUY_SUCCESS}))
codes = codes_delegate | codes_success
@@ -552,7 +575,7 @@
for c in codes:
keys_, k1_, k11_, k2_, k3_, k4_ = cls.__TargetCodePlateKeyManager.get_plate_keys(c)
# 瀹炴椂娑ㄥ仠鍘熷洜
- trade_codes_blocks_dict[c] = k1_|k4_
+ trade_codes_blocks_dict[c] = k1_ | k4_
# 缁熻鏉垮潡涓殑浠g爜
trade_block_codes_dict = {}
for c in trade_codes_blocks_dict:
--
Gitblit v1.8.0