From b7000cbf5e67e90abe53e96a4ea931afbf906e24 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 16 九月 2022 18:51:47 +0800
Subject: [PATCH] l2数据计算优化

---
 server.py |   20 +++++++++++++++-----
 1 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/server.py b/server.py
index 06a4e6a..8d532f2 100644
--- a/server.py
+++ b/server.py
@@ -10,11 +10,13 @@
 import authority
 import juejin
 import l2_data_manager
+import l2_data_util
 import tool
 import trade_manager
 import l2_code_operate
 
 from log import logger_l2_error, logger_l2_process, logger_device, logger_trade_delegate
+from trade_data_manager import TradeCancelDataManager
 
 
 class MyTCPServer(socketserver.TCPServer):
@@ -56,7 +58,7 @@
             if len(data) == 0:
                 # print("瀹㈡埛绔柇寮�杩炴帴")
                 break;
-            _str = data.decode()
+            _str = str(data, encoding="gb2312")
             if len(_str) > 0:
                 # print("缁撴灉锛�",_str)
                 type = data_process.parseType(_str)
@@ -65,8 +67,14 @@
 
                     try:
                         __start_time = round(time.time() * 1000)
+
                         # level2鐩樺彛鏁版嵁
-                        day, client, channel, code, datas = l2_data_manager.parseL2Data(_str)
+                        day, client, channel, code, capture_time, process_time, datas = l2_data_manager.parseL2Data(
+                            _str)
+                        # 10ms鐨勭綉缁滀紶杈撳欢鏃�
+                        capture_timestamp = __start_time - process_time - 10
+                        # 淇濆瓨l2鎴浘鏃堕棿
+                        TradeCancelDataManager.save_l2_capture_time(client, channel, code, capture_time)
                         cid, pid = gpcode_manager.get_listen_code_pos(code)
                         # 鍒ゆ柇鐩爣浠g爜浣嶇疆鏄惁涓庝笂浼犳暟鎹綅缃竴鑷�
                         if cid is not None and pid is not None and client == int(cid) and channel == int(pid):
@@ -95,7 +103,7 @@
                                         self.l2CodeOperate.set_operate_code_state(client, channel, 1)
 
                                 if gpcode_manager.is_listen(code):
-                                    l2_data_manager.process_data(code, datas)
+                                    l2_data_manager.process_data(code, datas, capture_timestamp)
                             except l2_data_manager.L2DataException as l:
                                 # 鍗曚环涓嶇
                                 if l.get_code() == l2_data_manager.L2DataException.CODE_PRICE_ERROR:
@@ -106,7 +114,7 @@
                                         # todo 澶晱鎰熺Щ闄や唬鐮�
                                         logger_l2_error.warning("code-{} l2鍗曚环閿欒:{}", code, l.msg)
                                         # 鍗曚环涓嶄竴鑷存椂闇�瑕佺Щ闄や唬鐮侀噸鏂版坊鍔�
-                                        l2_code_operate.L2CodeOperate().remove_l2_listen(code)
+                                        l2_code_operate.L2CodeOperate().remove_l2_listen(code, "l2鐩戝惉鍗曚环閿欒")
                                         self.l2_data_error_dict[key] = round(time.time() * 1000)
 
                             except Exception as e:
@@ -199,10 +207,12 @@
                             juejin.accpt_price(item["code"], float(item["price"]))
 
                 elif type == 30:
+                    # 蹇冭烦淇℃伅
                     data = data_process.parse(_str)["data"]
                     client_id = data["client"]
+                    thsDead = data.get("thsDead")
                     logger_device.info("锛坽}锛夊鎴风淇℃伅锛歿}".format(client_id, json.dumps(data)))
-                    data_process.saveClientActive(int(client_id), host)
+                    data_process.saveClientActive(int(client_id), host, thsDead)
                     # print("蹇冭烦锛�", client_id)
 
                 sk.send(return_str.encode())

--
Gitblit v1.8.0