新增热重载:文件变更自动重启(开发用,默认关)
- 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:
1 parent
9bcdad7aa1
commit
a11c0b375f
8 files changed
+266
-4
No files matched your search
@@ -38,6 +38,7 @@ class BotConfig:
|
||||
send_mode: str = "link" # 下载发送方式:"file" 先传文件 / "link" 直接发直链
|
||||
log_level: str = "INFO" # 控制台与文件日志级别
|
||||
log_dir: Path = Path("logs") # 日志目录;写不进去时自动退化为仅控制台
|
||||
reload: bool = False # 热重载(开发用;--reload 亦可开启)
|
||||
|
||||
@classmethod
|
||||
def load(cls) -> "BotConfig":
|
||||
@@ -51,6 +52,7 @@ class BotConfig:
|
||||
send_mode=_send_mode(),
|
||||
log_level=_log_level(),
|
||||
log_dir=Path(os.getenv("LOG_DIR", "logs")),
|
||||
reload=_flag("RELOAD", False),
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user