From a445f9a2650b9826fa72a203f3144a3ac27509a0 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 03 六月 2024 10:46:14 +0800 Subject: [PATCH] 代码结构修复 --- third_data/code_plate_key_manager.py | 52 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 47 insertions(+), 5 deletions(-) diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py index 173a91a..3f2a6de 100644 --- a/third_data/code_plate_key_manager.py +++ b/third_data/code_plate_key_manager.py @@ -11,14 +11,14 @@ from code_attribute import code_nature_analyse from db.redis_manager_delegate import RedisUtils from third_data import kpl_block_util, kpl_api, kpl_util -from trade.trade_manager import MarketSituationManager +from settings.trade_setting import MarketSituationManager from utils import global_util, tool, buy_condition_util from log_module import log, async_log_util from db import redis_manager_delegate as redis_manager from log_module.log import logger_kpl_block_can_buy from third_data.kpl_util import KPLPlatManager -from trade import trade_manager, l2_trade_util +from trade import trade_manager, l2_trade_util, trade_constant # 浠g爜绮鹃�夋澘鍧楃鐞� @@ -137,6 +137,48 @@ except Exception as e: logger_kpl_block_can_buy.error(f"{code} 鑾峰彇鏉垮潡鍑洪敊") logger_kpl_block_can_buy.exception(e) + + +# 绂佹涓嬪崟鐨勬澘鍧� +class ForbiddenBlockManager: + __db = 3 + __redisManager = redis_manager.RedisManager(3) + __instance = None + __forbidden_blocks = set() + + def __new__(cls, *args, **kwargs): + if not cls.__instance: + cls.__instance = super(ForbiddenBlockManager, cls).__new__(cls, *args, **kwargs) + cls.__load_data() + return cls.__instance + + @classmethod + def __get_redis(cls): + return cls.__redisManager.getRedis() + + # 鍔犺浇鏁版嵁 + @classmethod + def __load_data(cls): + blocks = cls.__get_redis().smembers("forbidden_blocks") + if blocks: + for b in blocks: + cls.__forbidden_blocks.add(b) + + def add(self, block): + self.__forbidden_blocks.add(block) + RedisUtils.sadd_async(self.__db, "forbidden_blocks", block) + RedisUtils.expire_async(self.__db, "forbidden_blocks", tool.get_expire()) + + def remove(self, block): + if block in self.__forbidden_blocks: + self.__forbidden_blocks.remove(block) + RedisUtils.srem_async(self.__db, "forbidden_blocks", block) + + def get_blocks(self): + return copy.deepcopy(self.__forbidden_blocks) + + def is_in(self, block): + return block in self.__forbidden_blocks # 寮�鐩樺暒绂佹浜ゆ槗鏉垮潡绠$悊 @@ -505,7 +547,7 @@ # 鏍规嵁韬綅绉婚櫎浠g爜 # return # 涓嬭繃鍗曠殑浠g爜涓嶇Щ闄� - if trade_manager.CodesTradeStateManager().get_trade_state_cache(code) != trade_manager.TRADE_STATE_NOT_TRADE: + if trade_manager.CodesTradeStateManager().get_trade_state_cache(code) != trade_constant.TRADE_STATE_NOT_TRADE: # 鍙涓嬭繃鍗曠殑灏变笉绉婚櫎 return l2_trade_util.forbidden_trade(code, msg=msg) @@ -851,9 +893,9 @@ if not blocks_compute_results: return False, True, f"娌℃湁鎵惧埌鏉垮潡", [], keys, [] codes_delegate = set(cls.__CodesTradeStateManager.get_codes_by_trade_states_cache( - {trade_manager.TRADE_STATE_BUY_DELEGATED, trade_manager.TRADE_STATE_BUY_PLACE_ORDER})) + {trade_constant.TRADE_STATE_BUY_DELEGATED, trade_constant.TRADE_STATE_BUY_PLACE_ORDER})) codes_success = set(cls.__CodesTradeStateManager.get_codes_by_trade_states_cache( - {trade_manager.TRADE_STATE_BUY_SUCCESS})) + {trade_constant.TRADE_STATE_BUY_SUCCESS})) codes = codes_delegate | codes_success # 缁熻鎴愪氦浠g爜鐨勬澘鍧� trade_codes_blocks_dict = {} -- Gitblit v1.8.0