From dd4636adb21cba5eec0b217b14b1d2bd09d0a09c Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期五, 12 七月 2024 13:51:21 +0800 Subject: [PATCH] 检测/修复数据服务 --- utils/socket_util.py | 6 ++- trade/huaxin/outside_api_command_callback.py | 14 ++++++- huaxin_client/socket_util.py | 21 ++++++++++ main.py | 15 +------ utils/server_util.py | 23 +++++++++++ 5 files changed, 62 insertions(+), 17 deletions(-) diff --git a/huaxin_client/socket_util.py b/huaxin_client/socket_util.py index f14cdd6..8347e33 100644 --- a/huaxin_client/socket_util.py +++ b/huaxin_client/socket_util.py @@ -5,6 +5,7 @@ # 娣诲姞鏁版嵁澶� import json +import socket from huaxin_client import crypt @@ -73,3 +74,23 @@ return True else: return False + + +def is_port_open(host, port, timeout=1): + try: + # 鍒涘缓涓�涓猻ocket瀵硅薄 + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + # 璁剧疆瓒呮椂鏃堕棿涓�1绉掗挓 + s.settimeout(timeout) + # 灏濊瘯杩炴帴鍒版寚瀹氱殑涓绘満鍜岀鍙� + s.connect((host, port)) + # 濡傛灉杩炴帴鎴愬姛锛屽垯绔彛鏄墦寮�鐨� + s.close() + return True + except socket.error: + # 濡傛灉杩炴帴鍑虹幇寮傚父锛屽垯绔彛鏄叧闂殑 + return False + + +if __name__ == "__main__": + print(is_port_open("127.0.0.1",8080)) \ No newline at end of file diff --git a/main.py b/main.py index a6dd603..ded0706 100644 --- a/main.py +++ b/main.py @@ -24,7 +24,7 @@ from trade.huaxin import huaxin_trade_server, huaxin_trade_api_server # from huaxin_api import trade_client, l2_client, l1_client -from utils import tool +from utils import tool, server_util def createTradeServer(pipe_server, queue_strategy_r_trade_w_: multiprocessing.Queue, @@ -50,7 +50,7 @@ server.global_data_loader.init() # # 鏁版嵁鏈嶅姟 - t1 = threading.Thread(target=createDataServer, name="createDataServer", daemon=True) + t1 = threading.Thread(target=server_util.run_data_server, name="createDataServer", daemon=True) t1.start() # # 浜ゆ槗鎺ュ彛鏈嶅姟 @@ -81,17 +81,6 @@ logger_system.exception(e) logger_system.error(f"绔彛鏈嶅姟鍣細{laddr[1]} 鍚姩澶辫触") - -def createDataServer(): - logger_system.info("create DataServer") - logger_system.info(f"createDataServer 绾跨▼ID:{tool.get_thread_id()}") - tcpserver = data_server.run("", 9004) - tcpserver.serve_forever() - try: - tcpserver.serve_forever() - except Exception as e: - logger_system.exception(e) - logger_system.error(f"绔彛鏈嶅姟鍣細{9004} 鍚姩澶辫触") if __name__ == '__main__1': diff --git a/trade/huaxin/outside_api_command_callback.py b/trade/huaxin/outside_api_command_callback.py index 13e4c72..c408c1b 100644 --- a/trade/huaxin/outside_api_command_callback.py +++ b/trade/huaxin/outside_api_command_callback.py @@ -49,7 +49,7 @@ from trade.sell.sell_rule_manager import TradeRuleManager, SellRule from trade.trade_manager import TradeTargetCodeModeManager, AutoCancelSellModeManager from settings.trade_setting import MarketSituationManager -from utils import socket_util, data_export_util, tool, huaxin_util, output_util, global_util +from utils import socket_util, data_export_util, tool, huaxin_util, output_util, global_util, server_util class OutsideApiCommandCallback(outside_api_command_manager.ActionCallback): @@ -509,6 +509,14 @@ except Exception as e: logger_debug.exception(e) fdata["today_history_k_bar_count"] = -1 + + # 鑾峰彇鏁版嵁鏈嶅姟鍣ㄦ槸鍚﹁仈閫� + try: + is_data_server_open = socket_util.is_port_bind(9004) + fdata["data_server_open"] = 1 if is_data_server_open else 0 + except Exception as e: + logger_debug.exception(e) + fdata["data_server_open"] = -1 # 鑾峰彇浜ゆ槗閫氶亾 result = {"code": 0, "data": fdata, "msg": ""} @@ -1133,8 +1141,10 @@ elif ctype == "get_per_code_buy_money": self.send_response({"code": 0, "data": {"money": constant.BUY_MONEY_PER_CODE}}, client_id, request_id) elif ctype == "repaire_task": - # 淇浠诲姟 + # 淇寮�鐩樺暒浠诲姟 kpl_data_manager.PullTask.repaire_pull_task() + # 淇鏁版嵁鏈嶅姟 + server_util.repaire_data_server() self.send_response({"code": 0, "data": {}}, client_id, request_id) elif ctype == "get_trade_queue": code = data["code"] diff --git a/utils/server_util.py b/utils/server_util.py new file mode 100644 index 0000000..6064811 --- /dev/null +++ b/utils/server_util.py @@ -0,0 +1,23 @@ +import threading + +from log_module.log import logger_system +from third_data import data_server +from utils import tool, socket_util + +DATA_SERVER_PORT = 9004 + +def run_data_server(): + logger_system.info("create DataServer") + logger_system.info(f"createDataServer 绾跨▼ID:{tool.get_thread_id()}") + tcpserver = data_server.run("", DATA_SERVER_PORT) + tcpserver.serve_forever() + try: + tcpserver.serve_forever() + except Exception as e: + logger_system.exception(e) + logger_system.error(f"绔彛鏈嶅姟鍣細{DATA_SERVER_PORT} 鍚姩澶辫触") + + +def repaire_data_server(): + if not socket_util.is_port_bind(DATA_SERVER_PORT): + threading.Thread(target=run_data_server, daemon=True).start() diff --git a/utils/socket_util.py b/utils/socket_util.py index 57ad952..9b2e446 100644 --- a/utils/socket_util.py +++ b/utils/socket_util.py @@ -82,9 +82,11 @@ # 绔彛鏄惁琚崰鐢� -def is_port_bind(port): +def is_port_bind(port, timeout=1): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(timeout) result = sock.connect_ex(('127.0.0.1', port)) + sock.close() if result == 0: return True else: @@ -92,4 +94,4 @@ if __name__ == "__main__": - pass + print(is_port_bind(9004)) -- Gitblit v1.8.0