Skip to content

后台初始化任一步失败会连带跳过主定时器且界面无提示,「更新后端」后定时任务整夜未触发 #738

Description

@qiyinxi

出问题的位置

调度中心 / 软件更新

AUTO-MAS 版本

v5.5.0-beta.2(Windows,D:\Program Files (x86)\AUTO-MAS,非 Runtime 托管)。结构性的那部分 dev 上同样存在。

问题描述

点标题栏「更新后端」之后,后端起来了、界面一切正常、手动运行队列也正常,但当晚 00:05 / 02:30 / 04:05 / 06:05 四个定时队列一个都没触发,直到早上手动重启才恢复。日志里 4 次点「更新后端」有 2 次是这样(09-11 07:43、09-13 22:42)。

原因分两层:

  1. 触发:beta.2 的「更新后端」会被生命周期协调器当成断线事故,尝试恢复后端服务 在源码拉取还没结束时就把后端拉起来,撞上 copyToRoot() 删掉重拷 app/ 的窗口,后台初始化里的懒导入抛 ModuleNotFoundError。这条触发路径 fix(ws): 断开不再立即弹窗,两个前端窗口不再互相抢占后端主连接 #547 起已挡住(beta.3+);顺便给 fix(update): 源码部署先删后拷非原子,中断即留下残缺 app/,启动时报 ModuleNotFoundError #544 补一份实证——那里的 ModuleNotFoundError 至少有一部分就是这个姿势。
  2. 放大:main.py initialize_background_services()(自 优化应用启动流程并提前提供后端就绪状态 #407 起)把 MCP 挂载、活动关卡、清理、ArknightWin32 适配器导入、MainTimer.start()、Koishi 全放在一个 try 里,前面任何一步抛异常就 background_status = "failed" 直接结束——定时器排在适配器导入后面,一起没了。/api/core/health 虽然回了 backgroundStatus: "failed" 和 backgroundError,但前端没有任何地方消费这两个字段(只在生成的 src/api/ 里出现),用户看不到任何异常。dev 54d4e0f 的 main.py:280-413 仍是同一结构。

关键日志(09-13):

frontend.log 22:42:04.744 | 标题栏       | 开始更新后端
frontend.log 22:42:12.336 | 应用生命周期 | 尝试恢复后端服务 (第 1 次)
frontend.log 22:42:15.189 | 后端服务     | 启动后端 - Python: ...\environment\python\python.exe, Main.py: ...\main.py
frontend.log 22:42:19.569 | 仓库服务     | 复制完成: .git
app.log      22:42:19.580 | ERROR | 主程序 | 后台初始化失败: ModuleNotFoundError: No module named 'app.core.maa_manager'
frontend.log 22:42:20.016 | 仓库服务     | 复制完成: app
frontend.log 22:42:22.077 | 后端服务     | 后端服务已在运行,等待健康检查

此后 app.log 直到次日 06:28 重启,没有一条「主业务定时器启动」或「定时唤起任务」。

复现步骤

  1. beta.2:点标题栏「更新后端」,恢复流程起的后端有一定概率撞上 app/ 重拷窗口(偶发,4 次里 2 次)。
  2. 任意版本:让 initialize_background_services() 里 MainTimer.start() 之前的任一步抛异常(例如临时把 app/MaaFW/ArknightWin32.py 改名),后端正常启动、界面正常,但计划表到点不触发,界面无提示(必现)。

期望

  • MainTimer.start() 不被前面可选步骤(MCP、活动关卡、清理、适配器、Koishi)的失败连带跳过,各步各自容错;
  • 前端消费 /api/core/health 的 backgroundStatus / backgroundError,failed 时给出可见提示。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions