修复后端在定时运行任务时将可恢复性网络错误误判为资源失效的问题

- do_save_task:为 get_stoken/get_detail 失败添加可恢复错误判断(inner error/request error/网络/服务端临时/timeout/connection 等)
- 可恢复错误:仅打印“(网络异常)”,不设置 shareurl_ban,不触发通知;下次定时继续尝试
- 不可恢复错误:设置 shareurl_ban,并仅通过 add_notify 通知(移除重复 print)
- 保持前端逻辑不变,与 UI 的可恢复错误处理一致,避免正常资源被误标记为失效
This commit is contained in:
x1ao4 2025-09-18 00:56:23 +08:00
parent 79007ab775
commit a918ffa062

View File

@ -2066,11 +2066,29 @@ class Quark:
# 获取分享详情
is_sharing, stoken = self.get_stoken(pwd_id, passcode)
if not is_sharing:
# 如果是可恢复错误(网络/临时),不要设置为失效资源
try:
error_text = str(stoken or "")
if self.is_recoverable_error(error_text):
print(f"分享详情获取失败(网络异常): {error_text}")
return # 直接返回,不设置 shareurl_ban
except Exception:
pass
# 非可恢复错误,按失效处理
task["shareurl_ban"] = stoken
print(f"分享详情获取失败: {stoken}")
add_notify(f"❗《{task['taskname']}》分享详情获取失败: {stoken}\n")
return
share_detail = self.get_detail(pwd_id, stoken, pdir_fid, _fetch_share=1)
# 如果获取详情返回错误,按可恢复性判断
if isinstance(share_detail, dict) and share_detail.get("error"):
error_text = str(share_detail.get("error") or "")
if self.is_recoverable_error(error_text):
print(f"获取分享详情失败(网络异常): {error_text}")
return # 直接返回,不设置 shareurl_ban
else:
task["shareurl_ban"] = self.format_unrecoverable_error(error_text) if hasattr(self, 'format_unrecoverable_error') else error_text
add_notify(f"❗《{task['taskname']}》获取分享详情失败: {task['shareurl_ban']}\n")
return
# 获取保存路径fid
savepath = task["savepath"]
if not self.savepath_fid.get(savepath):