Files
HeurAMS-Classic/src/heurams/tools/zmqclient.py
T

58 lines
1.6 KiB
Python

import zmq
import pickle
import readline
import sys
class DebugClient:
def __init__(self, port=5555):
self.context = zmq.Context()
self.socket = self.context.socket(zmq.REQ)
self.socket.connect(f"tcp://localhost:{port}")
print(f"已连接到调试服务器 (端口 {port})")
print("输入Python代码并按回车执行, 输入 'exit' 退出")
print("可用变量: app, logger, config_var")
print("-" * 50)
def execute(self, code):
"""执行代码并返回结果"""
try:
self.socket.send(pickle.dumps(code))
response = pickle.loads(self.socket.recv())
return response
except Exception as e:
return f"连接错误: {e}"
def repl(self):
"""交互式REPL循环"""
self.execute('print("test")')
while True:
try:
# 获取用户输入
code = input(">>> ").strip()
if not code:
continue
if code.lower() in ["exit", "quit"]:
print("退出调试客户端")
break
# 执行代码
result = self.execute(code)
print(f"结果: {result}\n")
except KeyboardInterrupt:
print("\n退出调试客户端")
break
except EOFError:
break
if __name__ == "__main__":
# 从命令行参数获取端口
port = int(sys.argv[1]) if len(sys.argv) > 1 else 5555
client = DebugClient(port)
client.repl()