From 34491829675033e41715648b1e92f339bf2f35d1 Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 25 八月 2022 17:51:10 +0800 Subject: [PATCH] Changes --- server.py | 68 ++++++++++++++++++++++++++------- 1 files changed, 53 insertions(+), 15 deletions(-) diff --git a/server.py b/server.py index 9e09707..2978180 100644 --- a/server.py +++ b/server.py @@ -7,11 +7,13 @@ import data_process import gpcode_manager import authority +import juejin import l2_data_manager +import tool import trade_manager import l2_code_operate -from log import logger_l2_error, logger_l2_process, logger_device +from log import logger_l2_error, logger_l2_process, logger_device, logger_trade_delegate class MyTCPServer(socketserver.TCPServer): @@ -28,6 +30,7 @@ reset_code_dict = {} set_operate_code_state_dict = {} l2_data_error_dict = {} + last_trade_delegate_data = None def setup(self): super().setup() # 鍙互涓嶈皟鐢ㄧ埗绫荤殑setup()鏂规硶锛岀埗绫荤殑setup鏂规硶浠�涔堥兘娌″仛 @@ -74,11 +77,13 @@ # 闂撮殧2s if key not in self.reset_code_dict or round( time.time() * 1000) - self.reset_code_dict[key] > 2000: + self.l2CodeOperate.set_operate_code_state(client, channel, 0) self.reset_code_dict[key] = round(time.time() * 1000) if code_ is None: code_ = "" - self.l2CodeOperate.repaire_operate(int(client), int(channel), code_) + if tool.is_trade_time(): + self.l2CodeOperate.repaire_operate(int(client), int(channel), code_) else: key = "{}-{}".format(client, channel) if key not in self.set_operate_code_state_dict or round( @@ -132,7 +137,8 @@ gpcode_manager.set_gp_list(code_list) # 閲嶆柊璁㈤槄 - self.server.pipe.send("resub") + self.server.pipe.send(json.dumps({"type": "resub"})) + sync_target_codes_to_ths() elif type == 2: # 娑ㄥ仠浠g爜 codeList = data_process.parseGPCode(_str) @@ -149,6 +155,10 @@ elif type == 5: # 浜ゆ槗濮旀墭淇℃伅 dataList = data_process.parseList(_str) + if self.last_trade_delegate_data != _str: + self.last_trade_delegate_data = _str + # 淇濆瓨濮旀墭淇℃伅 + logger_trade_delegate.info(dataList) try: trade_manager.process_trade_delegate_data(dataList) except Exception as e: @@ -175,6 +185,11 @@ {"code": 0, "data": {"client": int(client_id), "authoritys": json.loads(_authoritys)}}) except Exception as e: return_str = data_process.toJson({"code": 1, "msg": str(e)}) + elif type == 40: + data = data_process.parse(_str)["data"] + for item in data: + juejin.accpt_price(item["code"], float(item["price"])) + elif type == 30: data = data_process.parse(_str)["data"] client_id = data["client"] @@ -195,6 +210,7 @@ def send_msg(client_id, data): _ip = data_process.getActiveClientIP(client_id) + print("ip", client_id, _ip) if _ip is None or len(_ip) <= 0: raise Exception("瀹㈡埛绔疘P涓虹┖") socketClient = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -223,16 +239,38 @@ time.sleep(5) +# 鑾峰彇閲囬泦瀹㈡埛绔殑鐘舵�� +def get_client_env_state(client): + result = send_msg(client, {"action": "getEnvState"}) + result = json.loads(result) + if result["code"] == 0: + return json.loads(result["data"]) + else: + raise Exception(result["msg"]) + + +# 淇閲囬泦瀹㈡埛绔� +def repair_client_env(client): + result = send_msg(client, {"action": "repairEnv"}) + result = json.loads(result) + if result["code"] != 0: + raise Exception(result["msg"]) + + +# 鍚屾鐩爣鏍囩殑鍒板悓鑺遍『 +def sync_target_codes_to_ths(): + codes = gpcode_manager.get_gp_list() + code_list = [] + for code in codes: + code_list.append(code) + client = authority._get_client_ids_by_rule("client-industry") + result = send_msg(client[0], {"action": "syncTargetCodes", "data": code_list}) + return result + + if __name__ == "__main__": - code = "000503" - client_id, pos = gpcode_manager.get_listen_code_pos(code) - if client_id is not None and pos is not None: - # 鑾峰彇娑ㄥ仠浠蜂笌璺屽仠浠� - max_price = gpcode_manager.get_limit_up_price(code) - min_price = gpcode_manager.get_limit_down_price(code) - data = {"action": "repairL2Data", - "data": {"index": int(pos), "code": code, "min_price": float(min_price), - "max_price": float(max_price)}} - send_msg(client_id, data) - # 鏈夊�� - pass + try: + result = get_client_env_state(3) + print(result) + except Exception as e: + print(str(e)) -- Gitblit v1.8.0