Administrator
2024-10-12 aacc6148dd43a9cffbff9a23a273a55b64bf3d8c
third_data/kpl_data_manager.py
@@ -10,6 +10,7 @@
import constant
from db.redis_manager_delegate import RedisUtils
from log_module import async_log_util, log
from third_data.kpl_data_constant import LimitUpDataConstant
from utils import tool
# 开盘啦历史涨停数据管理
@@ -101,7 +102,7 @@
            cls.latest_origin_datas = records
            cls.__LimitUpCodesPlateKeyManager.set_today_limit_up(
                [(r[0], r[5], r[6].split('、') if r[6] else []) for r in records])
            kpl_data_constant.current_limit_up_datas = records
            LimitUpDataConstant.set_current_limit_up_datas(records)
        code_reasons_dict = {}
        reason_codes_dict = {}
@@ -167,6 +168,7 @@
                        if dd[0] in cls.latest_datas:
                            cls.latest_datas.pop(dd[0])
        cls.total_datas = KPLLimitUpDataRecordManager.list_all(tool.get_now_date_str())
        LimitUpDataConstant.set_history_limit_up_datas(cls.total_datas)
    @classmethod
    def load_total_datas(cls):
@@ -283,6 +285,18 @@
        if cls.__current_reason_codes_dict:
            return cls.__current_reason_codes_dict.keys()
        return set()
    @classmethod
    def get_new_blocks(cls, day):
        """
        获取某一天新出现的板块(新板块)
        @param day:
        @return:
        """
        sql = f"SELECT k.`_hot_block_name`, k.`_day` FROM `kpl_limit_up_record` k GROUP BY k.`_hot_block_name` HAVING k.`_day`='{day}' ORDER BY  k.`_day` DESC"
        mysqldb = mysql_data.Mysqldb()
        results = mysqldb.select_all(sql)
        return [x[0] for x in results]
class KPLDataManager:
@@ -464,6 +478,11 @@
            logger_debug.info("任务修复-开盘啦:涨停列表")
            # 大于20s就需要更新
            threading.Thread(target=cls.run_limit_up_task, daemon=True).start()
        key = "jingxuan_rank"
        if key not in cls.__latest_update_time_dict or time.time() - cls.__latest_update_time_dict[key] > 20:
            logger_debug.info("任务修复-开盘啦:精选列表")
            # 大于20s就需要更新
            threading.Thread(target=cls.run_market_jingxuan, daemon=True).start()
    @classmethod
    def run_limit_up_task(cls):
@@ -486,6 +505,20 @@
                pass
            finally:
                cls.__latest_update_time_dict["limit_up"] = time.time()
                time.sleep(3)
    @classmethod
    def run_market_jingxuan(cls):
        while True:
            try:
                if tool.is_trade_time():
                    results = kpl_api.getMarketJingXuanRealRankingInfo()
                    result = json.loads(results)
                    cls.__upload_data("jingxuan_rank", result)
            except:
                pass
            finally:
                cls.__latest_update_time_dict["jingxuan_rank"] = time.time()
                time.sleep(3)
    @classmethod
@@ -523,15 +556,18 @@
                        cls.__upload_data("jingxuan_rank", result)
                    except:
                        pass
                time.sleep(3)
                    finally:
                        cls.__latest_update_time_dict["jingxuan_rank"] = time.time()
                        time.sleep(3)
                else:
                    time.sleep(3)
        threading.Thread(target=cls.run_limit_up_task, daemon=True).start()
        # threading.Thread(target=get_bidding_money, daemon=True).start()
        # threading.Thread(target=get_market_industry, daemon=True).start()
        # threading.Thread(target=get_market_jingxuan, daemon=True).start()
        threading.Thread(target=cls.run_market_jingxuan, daemon=True).start()
if __name__ == "__main__":
    print(get_latest_current_limit_up_records())
    print(get_latest_current_limit_up_records())
    PullTask.run_pull_task()
    input()