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:
@@ -366,6 +366,12 @@ async def download_task(
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user