From 00c7f72bc3ce5be41a169c89560c736a87e68de8 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 06 六月 2024 17:31:54 +0800 Subject: [PATCH] 增加需求 --- middle_l1_data_server.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 47 insertions(+), 6 deletions(-) diff --git a/middle_l1_data_server.py b/middle_l1_data_server.py index 6af0133..c35c46f 100644 --- a/middle_l1_data_server.py +++ b/middle_l1_data_server.py @@ -2,12 +2,13 @@ import hashlib import json import logging +import os import queue import socket import socketserver import time - +import constant from log_module import log from utils import socket_util @@ -93,7 +94,14 @@ try: if data_json["type"] == 'l1_data': datas = data_json["data"] - L1DataManager.add_datas(datas) + L1DataManager().add_datas(datas) + break + elif data_json["type"] == 'get_l1_target_codes': + # 鑾峰彇鐩爣浠g爜 + codes = L1DataManager().get_target_codes() + sk.sendall(socket_util.load_header(json.dumps( + {"code": 0, "data": list(codes)}).encode( + encoding='utf-8'))) break except Exception as e: log.logger_tuoguan_request_debug.exception(e) @@ -117,8 +125,28 @@ # L1鏁版嵁绠$悊 class L1DataManager: __l1_datas_dict = {} + __target_codes = set() + __instance = None + + def __new__(cls, *args, **kwargs): + if not cls.__instance: + cls.__instance = super(L1DataManager, cls).__new__(cls, *args, **kwargs) + cls.__load_datas() + return cls.__instance @classmethod + def __load_datas(cls): + try: + with open(f"{constant.LOG_DIR}/l1_codes.txt", 'r', encoding='utf-8') as f: + lines = f.readlines() + for line in lines: + if line: + line = line.strip() + if line: + cls.__target_codes.add(line) + except: + pass + def add_datas(cls, datas): for data in datas: """ @@ -126,9 +154,22 @@ """ cls.__l1_datas_dict[data[0]] = data - @classmethod - def get_current_l1_data(cls): - return [cls.__l1_datas_dict[x] for x in cls.__l1_datas_dict] + def get_current_l1_data(self): + return [self.__l1_datas_dict[x] for x in self.__l1_datas_dict] + + def save_target_codes(self, codes): + # 淇濆瓨鐩爣浠g爜 + self.__target_codes = codes + # 灏嗕唬鐮佷繚瀛樺埌鏂囦欢 + path = f"{constant.LOG_DIR}/l1_codes.txt" + if not os.path.exists(constant.LOG_DIR): + os.mkdir(constant.LOG_DIR) + with open(path, 'w', encoding='utf-8') as f: + for code in codes: + f.write(f"{code}\n") + + def get_target_codes(self): + return self.__target_codes def run(port): @@ -140,4 +181,4 @@ if __name__ == "__main__": - print(builtins.type("") == str) + print( L1DataManager().get_target_codes()) -- Gitblit v1.8.0