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