fix: 清理 _download_result 中失败/中断任务的僵尸记录
部署到群晖 / deploy (push) Successful in 47s

UI "正在下载" 数会随时间膨胀(如设置并发=5 却显示 54 个)的根因:
_download_result 仅在用户手动「跳过」时被清理,下载失败/中断(3 次重试
都失败、_check_download_finish 大小不匹配抛 BadRequest 等)路径不会清,
导致中途失败的进度记录永久残留在内存字典里被 UI 误判为"还在下载"。

修复:在 download_task 末尾统一调用 remove_download_entry,无论成功/
失败/跳过任务结束就清掉。该 dict 仅用于 UI/Bot 实时进度展示,不参与
下载触发或重试决策(重试由 ids_to_retry + worker 内部 3 次重试两层兜底),
清理后下载逻辑零影响。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
yuming
2026-04-26 15:50:13 +08:00
parent cb2a453b5f
commit bc926bd972
+6
View File
@@ -366,6 +366,12 @@ async def download_task(
file_size, file_size,
) )
# 任务结束(无论成功/失败/跳过)都清理实时进度缓存,避免失败/中断的"僵尸记录"
# 残留在 _download_result 里被 UI 误判为"还在下载"。
# 已完成的历史记录走数据库(db.record_download),不依赖这个 dict。
# key 类型与 update_download_status 写入时保持一致(node.chat_id 原类型)。
remove_download_entry(node.chat_id, message.id)
# pylint: disable = R0915,R0914 # pylint: disable = R0915,R0914