Skip to content

fix(backend): 后台任务注册表收编三处无主 create_task - #76

Merged
fxbin merged 1 commit into
mainfrom
issue-72-task-registry
Sep 27, 2026
Merged

fxbin merged 1 commit into
mainfrom
issue-72-task-registry

Conversation

@fxbin

@fxbin fxbin commented Sep 27, 2026

Copy link
Copy Markdown
Owner

What & why

修复 #72 / 矩阵 D-9:三处 fire-and-forget create_task 无引用、无异常收集、不受停机管理:

  1. scheduler.py 启动首次 _rescan_sources() / _recover_analysis_jobs_on_startup() —— 异常静默丢失("Task exception was never retrieved"),停机时与 engine.dispose() 竞争 session;
  2. daily_reports.py 日报后台 _bg_generate —— mark_error 失败被裸 except: pass 吞掉,报告可永远卡在 GENERATING。

修复:新增 app/core/task_registry.py(兴趣向量重建模式的通用化)——track_background_task 保存引用 + done callback 记异常日志;drain_tracked_tasks 停机统一 cancel+等待(超时告警不强杀)。三处调用点接入;lifespan 停机在 shutdown_scheduler 后 drain;日报 mark_error 失败改为 logger.exception 留痕。

Refs #72(Parent #6)。Closes #72。

Area

  • backend

Verification

  • 新增 tests/test_task_registry.py:异常记日志并注销 / drain 取消清空 / 超时告警不抛出 / 空注册表 no-op
  • py_compile + ruff check + ruff format --check 全过
  • 日报相关既有测试(test_daily_report_user / versions)不受影响

Verifier verdict

CI 门禁即机器 Verifier;注册表契约由独立单测钉死(含「未启动即 cancel」等 asyncio 边界语义)。

Checklist

  • Branch named issue-<number>-<short-slug> and PR links the issue
  • 无本地文件入库

@fxbin
fxbin merged commit b187d3f into main Sep 27, 2026
5 checks passed
@fxbin
fxbin deleted the issue-72-task-registry branch September 27, 2026 14:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[P1][Lifecycle] 三处无主 create_task 可静默丢异常并穿透优雅停机

1 participant