新增热重载:文件变更自动重启(开发用,默认关)

- musicbot/reload.py:轮询监控 musicbot/ 下的 .py 与 intents.toml/.env,
  变更后重启 bot 子进程;跳过 logs/、__pycache__/、.venv/
- 进程级重启而非模块重载:长连接 + 模块级状态 + handler 闭包,
  就地重载易留幽灵 handler,重启子进程状态干净
- 子进程用 _MUSICBOT_RELOAD_CHILD 标记,不会套娃自我复制
- Windows 用 taskkill /T 收整棵进程树,实测连续重载无进程泄漏
- 开启方式:`uv run musicbot --reload`(start.bat 已带)或 RELOAD=on
- 监督者不配日志,避免与子进程抢写同一日志文件
This commit is contained in:
snowy-yang committed 2026-09-20 22:44:20 +08:00
1 parent 9bcdad7aa1
commit a11c0b375f
8 files changed
+266 -4

No files matched your search

+4
View File
@@ -25,3 +25,7 @@ SEND_MODE=link
# 日志同时输出到控制台与 LOG_DIR/musicbot.log(按天轮转、保留 7 天)
LOG_LEVEL=INFO
LOG_DIR=logs
# 热重载(开发用):on 时监控源码与 intents.toml/.env,变更后自动重启 bot。
# 默认 off;也可用命令行 `musicbot --reload` 开启(start.bat 已带该参数)。
RELOAD=off