| | |
| | | from db.redis_manager import RedisUtils |
| | | from log_module import async_log_util |
| | | from log_module.log import logger_l2_market_sell |
| | | from utils import tool |
| | | from utils.tool import CodeDataCacheUtil |
| | | |
| | | |
| | | class L2MarketSellManager: |
| | |
| | | __instance = None |
| | | __current_total_sell_data_cache = {} |
| | | __last_total_sell_data_cache = {} |
| | | __used_refer_sell_data_cache = {} |
| | | |
| | | def __new__(cls, *args, **kwargs): |
| | | if not cls.__instance: |
| | |
| | | def __load_datas(cls): |
| | | __redis = cls.__get_redis() |
| | | try: |
| | | pass |
| | | keys = RedisUtils.keys(__redis, "fast_buy_used_sell_data-*") |
| | | for k in keys: |
| | | code = k.split("-")[-1] |
| | | val = RedisUtils.smembers(__redis, k) |
| | | CodeDataCacheUtil.set_cache(cls.__used_refer_sell_data_cache, code, val) |
| | | finally: |
| | | RedisUtils.realse(__redis) |
| | | |
| | | def set_sell_time_used(self, code, time_str): |
| | | if code not in self.__used_refer_sell_data_cache: |
| | | self.__used_refer_sell_data_cache[code] = set() |
| | | self.__used_refer_sell_data_cache[code].add(time_str) |
| | | RedisUtils.sadd_async(self.__db, f"fast_buy_used_sell_data-{code}", time_str) |
| | | RedisUtils.expire_async(self.__db, f"fast_buy_used_sell_data-{code}", tool.get_expire()) |
| | | |
| | | def is_refer_sell_time_used(self, code, time_str): |
| | | if code not in self.__used_refer_sell_data_cache: |
| | | return False |
| | | return time_str in self.__used_refer_sell_data_cache[code] |
| | | |
| | | def clear(self): |
| | | self.__used_refer_sell_data_cache.clear() |
| | | keys = RedisUtils.keys(self.__get_redis(), "fast_buy_used_sell_data-*") |
| | | for k in keys: |
| | | RedisUtils.delete_async(self.__db, k) |
| | | |
| | | # 设置当前的总卖 |
| | | def set_current_total_sell_data(self, code, time_str, money): |
| | |
| | | async_log_util.info(logger_l2_market_sell, f"{code}: {time_str}-{money}") |
| | | if code in self.__current_total_sell_data_cache: |
| | | self.__last_total_sell_data_cache[code] = self.__current_total_sell_data_cache.get(code) |
| | | self.__current_total_sell_data_cache[code] = (time_str, money) |
| | | self.__current_total_sell_data_cache[code] = (time_str, round(money)) |
| | | |
| | | # 获取参考卖的数据 |
| | | def get_refer_sell_data(self, code, time_str): |
| | | cuurent = self.__current_total_sell_data_cache.get(code) |
| | | if cuurent is None: |
| | | return None |
| | | if int(time_str.replace(":", "")) > int(cuurent[0].replace(":", "")): |
| | | return cuurent |
| | | last = self.__last_total_sell_data_cache.get(code) |
| | | if int(time_str.replace(":", "")) > int(last[0].replace(":", "")): |
| | | return last |
| | | return None |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | pass |