From 892b50e242e3c59a738b92dfdfee1bf1ff8932f2 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期五, 21 十月 2022 16:59:58 +0800 Subject: [PATCH] 新策略修改 --- gui.py | 93 ++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 77 insertions(+), 16 deletions(-) diff --git a/gui.py b/gui.py index 8bfe3ce..d4fc3aa 100644 --- a/gui.py +++ b/gui.py @@ -12,8 +12,9 @@ import multiprocessing import global_util +import log +import mysql_data import redis_manager -import mongo_data import server import trade_gui from l2_code_operate import L2CodeOperate @@ -22,12 +23,39 @@ from server import * -def createServer(pipe): +# 璇诲彇server杩涚▼鐨勬秷鎭� +def __read_server_pipe(pipe): + while True: + value = pipe.recv() + if value is not None: + value = json.loads(value) + if value.get("type") == "clear_l2": + code = value["data"]["code"] + print("娓呴櫎l2鏁版嵁", code) + if len(code) != 6: + continue + l2_data_manager.clear_l2_data(code) + # 鍒犻櫎level2鐨勬暟鎹� + if l2_data_manager.local_today_datas and code in l2_data_manager.local_today_datas: + l2_data_manager.local_today_datas.pop(code) + if l2_data_manager.local_latest_datas and code in l2_data_manager.local_latest_datas: + l2_data_manager.local_latest_datas.pop(code) + + time.sleep(0.1) + + +def createServer(pipe_juejin, pipe_gui): print("create SocketServer") # 鍒濆鍖栧弬鏁� global_util.init() + + t1 = threading.Thread(target=lambda: __read_server_pipe(pipe_gui)) + # 鍚庡彴杩愯 + t1.setDaemon(True) + t1.start() + laddr = "", 9001 - tcpserver = MyThreadingTCPServer(laddr, MyBaseRequestHandle, pipe=pipe) # 娉ㄦ剰锛氬弬鏁版槸MyBaseRequestHandle + tcpserver = MyThreadingTCPServer(laddr, MyBaseRequestHandle, pipe_juejin=pipe_juejin) # 娉ㄦ剰锛氬弬鏁版槸MyBaseRequestHandle # tcpserver.handle_request() # 鍙帴鍙椾竴涓鎴风杩炴帴 tcpserver.serve_forever() # 姘镐箙寰幆鎵ц,鍙互鎺ュ彈澶氫釜瀹㈡埛绔繛鎺� @@ -37,11 +65,17 @@ class GUI: + + def __init__(self): p1, p2 = multiprocessing.Pipe() + gs_gui_pipe, gs_server_pipe = multiprocessing.Pipe() - self.serverProcess = multiprocessing.Process(target=createServer, args=(p1,)) + self.serverProcess = multiprocessing.Process(target=createServer, args=(p1, gs_server_pipe,)) self.jueJinProcess = multiprocessing.Process(target=startJueJin, args=(p2,)) + self.p1 = p1 + self.p2 = p2 + self.gs_gui_pipe = gs_gui_pipe # L2鏄剧ず self.l2_codes = {} # 鑾峰彇l2鐨勫鎴风鍒楄〃 @@ -51,6 +85,19 @@ for i in range(0, 8): code = gpcode_manager.get_listen_code_by_pos(client_id, i) self.l2_codes[client_id].append(code) + + # 璇诲彇server杩涚▼鐨勬秷鎭� + def __read_gui_server_pipe(self,pipe): + while True: + value = pipe.recv() + if value is not None: + value = json.loads(value) + if value.get("type") == "l2_data_notify": + code = value["data"]["code"] + count =value["data"]["count"] + print("l2鏁版嵁閫氱煡锛歿}-{}", code,count) + + time.sleep(0.1) def run(self): # TODO @@ -63,6 +110,11 @@ # 瀹㈡埛绔痵erver杩炴帴 t1 = threading.Thread(target=lambda: server.test_client_server()) + # 鍚庡彴杩愯 + t1.setDaemon(True) + t1.start() + + t1 = threading.Thread(target=lambda: self.__read_gui_server_pipe(self.gs_gui_pipe)) # 鍚庡彴杩愯 t1.setDaemon(True) t1.start() @@ -93,12 +145,12 @@ _set_error_color(text, 1, error) # 楠岃瘉mongodb try: - count = mongo_data.count("clients", {}) - if count < 1: + counts = mysql_data.Mysqldb().select_one("select count(*) from clients") + if counts[0] < 1: raise Exception("") - text.insert(END, "mongodb杩炴帴鎴愬姛锛乗n") + text.insert(END, "mysql杩炴帴鎴愬姛锛乗n") except: - error = "mongodb杩炴帴澶辫触...\n" + error = "mysql杩炴帴澶辫触...\n" text.insert(END, error) _set_error_color(text, 2, error) pass @@ -221,18 +273,18 @@ # 缁樺埗浜ゆ槗鐘舵�� def __draw_trade_state(self, frame): def refresh_data(): - normal=True + normal = True if l2_code_operate.L2CodeOperate.is_read_queue_valid(): cl_queue.configure(text="姝e父", foreground="#008000") else: cl_queue.configure(text="寮傚父", foreground="#FF7F27") - normal=False + normal = False try: trade_gui.THSGuiTrade.checkEnv() cl_win.configure(text="姝e父", foreground="#008000") except Exception as e: normal = False - cl_win.configure(text="寮傚父:{}".format(str(e)),foreground="#FF7F27") + cl_win.configure(text="寮傚父:{}".format(str(e)), foreground="#FF7F27") # 鐘舵�佹湁闂锛岄渶瑕佹姤璀� if not normal: alert_util.alarm() @@ -247,11 +299,10 @@ pass time.sleep(2) - start_y=230 + start_y = 230 btn = Button(frame, text="鍒锋柊鐘舵��", command=refresh_data) btn.place(x=10, y=start_y) - auo_refresh = IntVar() ch1 = Checkbutton(frame, text='鑷姩鍒锋柊', variable=auo_refresh, onvalue=1, offvalue=0, background="#DDDDDD", @@ -260,7 +311,7 @@ auo_refresh.set(1) ch1.place(x=100, y=start_y) - y_=start_y+30 + y_ = start_y + 30 cl = Label(frame, text="鎿嶄綔闃熷垪鐘舵�侊細", bg="#DDDDDD") cl.place(x=10, y=y_) cl_queue = Label(frame, text="鏈煡", bg="#DDDDDD") @@ -687,6 +738,10 @@ m = L2TradeFactorUtil.compute_m_value(code) showinfo("鎻愮ず", "{}".format(m)) + def clear_l2(code): + self.gs_gui_pipe.send(json.dumps({"type": "clear_l2", "data": {"code": code}})) + pass + frame = Frame(root, {"height": 280, "width": 300, "bg": "#DDDDDD"}) frame.grid(row=2, column=2, rowspan=2, pady=5) btntext = StringVar() @@ -723,11 +778,17 @@ btn.place(x=220, y=100) btn = Button(frame, text="鑾峰彇m鍊�", command=lambda: compute_m(code.get())) - btn.place(x=10, y=120) + btn.place(x=10, y=130) + + btn = Button(frame, text="瀵煎嚭浜ゆ槗鏃ュ織", command=lambda: log.export_l2_log(code.get())) + btn.place(x=80, y=130) + + btn = Button(frame, text="娓呯┖l2鏁版嵁", command=lambda: clear_l2(code.get())) + btn.place(x=150, y=130) # 浜ゆ槗鎸夐挳 btn = Button(frame, textvariable=btntext, command=startJueJinGui) - btn.place(x=10, y=150) + btn.place(x=10, y=160) btntext.set("鍚姩鎺橀噾") btn = Button(frame, text="閲嶆柊璁㈤槄琛屾儏", command=resub) -- Gitblit v1.8.0