initial-import: 2026-04-11 21:18:55
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
在容器内清理占用端口的进程
|
||||
"""
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
def main():
|
||||
"""主函数"""
|
||||
print("🧹 在容器内清理占用端口的进程...")
|
||||
print("="*60)
|
||||
|
||||
# 使用Python在容器内检测并关闭进程
|
||||
script = '''
|
||||
import psutil
|
||||
import socket
|
||||
|
||||
def get_pid_using_port(port):
|
||||
"""获取占用指定端口的PID"""
|
||||
for conn in psutil.net_connections():
|
||||
if conn.laddr.port == port:
|
||||
return conn.pid
|
||||
return None
|
||||
|
||||
ports = [8001, 8088]
|
||||
for port in ports:
|
||||
pid = get_pid_using_port(port)
|
||||
if pid:
|
||||
print(f"✅ 端口 {port} 被PID {pid} 占用,正在杀死...")
|
||||
try:
|
||||
process = psutil.Process(pid)
|
||||
process.terminate()
|
||||
process.wait(timeout=3)
|
||||
print(f" ✅ 已杀死PID {pid}")
|
||||
except Exception as e:
|
||||
print(f" ⚠️ 杀死PID {pid} 失败: {e}")
|
||||
else:
|
||||
print(f"✅ 端口 {port} 未被占用")
|
||||
|
||||
print("\\n🧹 清理完成,现在启动新服务...")
|
||||
'''
|
||||
|
||||
# 执行清理脚本
|
||||
cmd = f'''ssh admin@192.168.2.154 "export PATH=$PATH:/var/packages/Docker/target/usr/bin && docker exec sanguo_vnpy python3 -c '{script}'"'''
|
||||
print(f"执行清理...")
|
||||
subprocess.run(cmd, shell=True)
|
||||
|
||||
print("\n🚀 启动新服务...")
|
||||
|
||||
# 启动RPC服务
|
||||
rpc_cmd = f'''ssh admin@192.168.2.154 "export PATH=$PATH:/var/packages/Docker/target/usr/bin && docker exec sanguo_vnpy bash -c 'python3 /app/scripts/test_server_final_fixed.py &'"'''
|
||||
subprocess.run(rpc_cmd, shell=True)
|
||||
|
||||
# 等待
|
||||
import time
|
||||
time.sleep(3)
|
||||
|
||||
# 启动API服务
|
||||
api_cmd = f'''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_fixed:app --host 0.0.0.0 --port 8088 &'"'''
|
||||
subprocess.run(api_cmd, shell=True)
|
||||
|
||||
time.sleep(3)
|
||||
|
||||
print("\n" + "="*60)
|
||||
print("✅ 清理和重启完成!")
|
||||
print("请测试回测API...")
|
||||
print("="*60)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user