fix: 修复WebUI重启后无法使用Ctrl+C停止Maibot的问题

This commit is contained in:
Ronifue
2025-11-29 19:59:23 +08:00
parent 3640416ad0
commit 11aeb906ac
2 changed files with 76 additions and 4 deletions

View File

@@ -39,7 +39,7 @@ async def restart_maibot():
"""
重启麦麦主程序
使用 os.execv 重启当前进程,配置更改将在重启后生效。
请求重启当前进程,配置更改将在重启后生效。
注意:此操作会使麦麦暂时离线。
"""
import asyncio
@@ -51,9 +51,10 @@ async def restart_maibot():
# 定义延迟重启的异步任务
async def delayed_restart():
await asyncio.sleep(0.5) # 延迟0.5秒,确保响应已发送
python = sys.executable
args = [python] + sys.argv
os.execv(python, args)
# 使用 os._exit(42) 退出当前进程,配合外部 runner 脚本进行重启
# 42 是约定的重启状态码
print(f"[{datetime.now()}] WebUI 请求重启,退出代码 42")
os._exit(42)
# 创建后台任务执行重启
asyncio.create_task(delayed_restart())