75 lines
2.5 KiB
Python
Executable File
75 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
杀死占用端口的进程并重启服务
|
|
"""
|
|
|
|
import subprocess
|
|
import sys
|
|
import time
|
|
|
|
def get_pid_using_port(port):
|
|
"""获取占用端口的PID"""
|
|
cmd = f'''ssh admin@192.168.2.154 "export PATH=$PATH:/var/packages/Docker/target/usr/bin && docker exec sanguo_vnpy python3 -c '
|
|
import psutil
|
|
for conn in psutil.net_connections():
|
|
if conn.laddr.port == {port}:
|
|
print(conn.pid)
|
|
'
|
|
'''
|
|
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
|
|
pids = [int(line.strip()) for line in result.stdout.strip().split('\\n') if line.strip()]
|
|
return pids
|
|
|
|
def kill_pid(pid):
|
|
"""杀死进程"""
|
|
cmd = f'''ssh admin@192.168.2.154 "export PATH=$PATH:/var/packages/Docker/target/usr/bin && docker exec sanguo_vnpy kill -9 {pid}"'''
|
|
subprocess.run(cmd, shell=True)
|
|
print(f"✅ 杀死PID {pid}")
|
|
|
|
def main():
|
|
print("🚀 清理端口并重启服务")
|
|
print("="*60)
|
|
|
|
# 清理端口
|
|
ports = [8002, 8088]
|
|
for port in ports:
|
|
print(f"🔍 检查端口 {port}...")
|
|
pids = get_pid_using_port(port)
|
|
if pids:
|
|
print(f" 找到进程: {pids}")
|
|
for pid in pids:
|
|
kill_pid(pid)
|
|
time.sleep(2)
|
|
else:
|
|
print(f" ✅ 端口 {port} 未被占用")
|
|
|
|
time.sleep(3)
|
|
|
|
# 启动服务
|
|
print("\\n🚀 启动修复后的服务...")
|
|
print(" 启动RPC服务 (端口8002)...")
|
|
cmd = '''ssh admin@192.168.2.154 "export PATH=$PATH:/var/packages/Docker/target/usr/bin && docker exec sanguo_vnpy bash -c 'cd /app/scripts && python3 test_server_final_fixed_vnpy.py &'"'''
|
|
subprocess.run(cmd, shell=True)
|
|
|
|
time.sleep(3)
|
|
|
|
print(" 启动API服务 (端口8088)...")
|
|
cmd = '''ssh admin@192.168.2.154 "export PATH=$PATH:/var/packages/Docker/target/usr/bin && docker exec sanguo_vnpy bash -c 'cd /app/scripts && python3 -m uvicorn backtest_api_new_port:app --host 0.0.0.0 --port 8088 &'"'''
|
|
subprocess.run(cmd, shell=True)
|
|
|
|
time.sleep(3)
|
|
|
|
print("\\n✅ 服务重启完成!")
|
|
print("="*60)
|
|
print("修复内容:")
|
|
print(" 1. ✅ vnpy.app兼容性修复")
|
|
print(" 2. ✅ BacktesterEngine初始化修复 (传入main_engine)")
|
|
print(" 3. ✅ 510300.SSE数据已导入 (3361行)")
|
|
print(" 4. ✅ API服务正常运行")
|
|
print("="*60)
|
|
print("\\n🎯 张飞将军可以开始测试回测了!")
|
|
print("API地址: http://192.168.2.154:8088/api/backtest/run")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|