mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-28 01:53:53 +08:00
update:重启服务器功能功能
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import copy
|
import copy
|
||||||
import json
|
import json
|
||||||
|
import sys
|
||||||
import uuid
|
import uuid
|
||||||
import time
|
import time
|
||||||
import queue
|
import queue
|
||||||
@@ -233,6 +234,38 @@ class ConnectionHandler:
|
|||||||
elif isinstance(message, bytes):
|
elif isinstance(message, bytes):
|
||||||
await handleAudioMessage(self, message)
|
await handleAudioMessage(self, message)
|
||||||
|
|
||||||
|
async def handle_restart(self, message):
|
||||||
|
"""处理服务器重启请求"""
|
||||||
|
try:
|
||||||
|
|
||||||
|
self.logger.bind(tag=TAG).info("收到服务器重启指令,准备执行...")
|
||||||
|
|
||||||
|
# 发送确认响应
|
||||||
|
await self.websocket.send(json.dumps({
|
||||||
|
"type": "server_response",
|
||||||
|
"status": "success",
|
||||||
|
"message": "服务器重启中..."
|
||||||
|
}))
|
||||||
|
|
||||||
|
# 异步执行重启操作
|
||||||
|
def restart_server():
|
||||||
|
"""实际执行重启的方法"""
|
||||||
|
time.sleep(1)
|
||||||
|
self.logger.bind(tag=TAG).info("执行服务器重启...")
|
||||||
|
python = sys.executable
|
||||||
|
os.execl(python, python, *sys.argv)
|
||||||
|
|
||||||
|
# 使用线程执行重启避免阻塞事件循环
|
||||||
|
threading.Thread(target=restart_server, daemon=True).start()
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
self.logger.bind(tag=TAG).error(f"重启失败: {str(e)}")
|
||||||
|
await self.websocket.send(json.dumps({
|
||||||
|
"type": "server_response",
|
||||||
|
"status": "error",
|
||||||
|
"message": f"Restart failed: {str(e)}"
|
||||||
|
}))
|
||||||
|
|
||||||
def _initialize_components(self, private_config):
|
def _initialize_components(self, private_config):
|
||||||
"""初始化组件"""
|
"""初始化组件"""
|
||||||
if private_config is not None:
|
if private_config is not None:
|
||||||
|
|||||||
@@ -136,5 +136,8 @@ async def handleTextMessage(conn, message):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
# 重启服务器
|
||||||
|
elif msg_json["action"] == "restart":
|
||||||
|
await conn.handle_restart(msg_json)
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
await conn.websocket.send(message)
|
await conn.websocket.send(message)
|
||||||
|
|||||||
Reference in New Issue
Block a user