Administrator
2023-08-08 c20c3c10635ce78db4a86ce9c0bb1d02e90f525d
third_data/kpl_data_manager.py
@@ -1,7 +1,9 @@
import json
import os
import time
import constant
from db.redis_manager import RedisUtils
from utils import tool
# 开盘啦历史涨停数据管理
@@ -21,13 +23,13 @@
        return self.__redisManager.getRedis()
    def save_reason(self, code, reason):
        self.__get_redis().setex(f"kpl_limitup_reason-{code}", tool.get_expire(), reason)
        RedisUtils.setex(self.__get_redis(),f"kpl_limitup_reason-{code}", tool.get_expire(), reason)
    def list_all(self):
        keys = self.__get_redis().keys("kpl_limitup_reason-*")
        keys = RedisUtils.keys(self.__get_redis(), "kpl_limitup_reason-*")
        dict_ = {}
        for k in keys:
            val = self.__get_redis().get(k)
            val = RedisUtils.get(self.__get_redis(), k)
            dict_[k.split("-")[1]] = val
        return dict_
@@ -157,7 +159,6 @@
            wheres.append(f"hb.`_hot_block_name` != '{b}'")
        wheres = " and ".join(wheres)
        sql = f"SELECT GROUP_CONCAT(_hot_block_name) FROM (SELECT hb.`_hot_block_name`,hb.`_day` FROM `kpl_limit_up_record` hb WHERE hb.`_code`='{code}' AND {wheres} ORDER BY hb.`_day` DESC LIMIT 2) a  GROUP BY a._day ORDER BY a._day DESC LIMIT 1"
        print(sql)
        mysqldb = mysql_data.Mysqldb()
        return mysqldb.select_one(sql)
@@ -186,14 +187,17 @@
class KPLDataManager:
    __latest_datas = {}
    kpl_data_update_info = {}
    def __save_in_file(self, key, datas):
    @classmethod
    def __save_in_file(cls, key, datas):
        name = f"{tool.get_now_date_str()}_{key}.log"
        path = f"{constant.CACHE_PATH}/{name}"
        with open(path, 'w') as f:
            f.write(json.dumps(datas))
    def __get_from_file(self, key, day=tool.get_now_date_str()):
    @classmethod
    def __get_from_file(cls, key, day=tool.get_now_date_str()):
        name = f"{day}_{key}.log"
        path = f"{constant.CACHE_PATH}/{name}"
        if not os.path.exists(path):
@@ -204,7 +208,8 @@
                return json.loads(lines[0])
        return None
    def get_from_file(self, type, day):
    @classmethod
    def get_from_file(cls, type, day):
        name = f"{day}_{type.value}.log"
        path = f"{constant.CACHE_PATH}/{name}"
        if not os.path.exists(path):
@@ -215,8 +220,9 @@
                return json.loads(lines[0])
        return None
    @classmethod
    # 获取最近几天的数据,根据日期倒序返回
    def get_latest_from_file(self, type, count):
    def get_latest_from_file(cls, type, count):
        files = os.listdir(constant.CACHE_PATH)
        file_name_list = []
        for f in files:
@@ -237,17 +243,20 @@
        return fresults
    def save_data(self, type, datas):
        self.__latest_datas[type] = datas
        self.__save_in_file(type, datas)
    @classmethod
    def save_data(cls, type, datas):
        cls.kpl_data_update_info[type] = (tool.get_now_time_str(), len(datas))
        cls.__latest_datas[type] = datas
        cls.__save_in_file(type, datas)
    def get_data(self, type):
    @classmethod
    def get_data(cls, type):
        type = type.value
        if type in self.__latest_datas:
            return self.__latest_datas[type]
        result = self.__get_from_file(type)
        if type in cls.__latest_datas:
            return cls.__latest_datas[type]
        result = cls.__get_from_file(type)
        if result is not None:
            self.__latest_datas[type] = result
            cls.__latest_datas[type] = result
        return result