Reaparr 下载队列实战:暂停、恢复、自动重试的10个实用技巧
2026/9/16 5:08:46 网站建设 项目流程

Reaparr 下载队列实战:暂停、恢复、自动重试的10个实用技巧

【免费下载链接】ReaparrPlex downloader that brings content from any server to yours!项目地址: https://gitcode.com/gh_mirrors/pl/Reaparr

Reaparr 是一款开源的 Plex 下载器,能把任意 Plex 服务器上的电影和剧集直接下载到你自己的服务器。它的下载队列支持手动暂停、断点式恢复、关机自动保存进度、崩溃后自动归位,以及失败后的干净重试。本文面向新手整理了 10 个实用技巧,帮你快速掌握 Reaparr 下载队列的完整玩法。

1️⃣ 读懂下载状态:Queued、Paused 与 AutoPaused 的区别

Reaparr 中每个下载任务都有清晰的状态机,定义在 DownloadStatus.cs 中。常见状态如下:

状态含义能否直接恢复
Queued(排队中)等待队列轮到它开跑无需操作
Downloading(下载中)正在从源服务器拉取数据
Moving(转移中)下载完成,正在移动到最终目录
Paused(已暂停)你手动暂停的,可无损恢复
AutoPaused(自动暂停)系统暂停(关机/崩溃),可恢复
Stopped(已停止)被显式取消,需 Restart 重来❌ 需重试
SourceUnavailable(源不可用)源服务器上的媒体已被删除❌ 需检查源

记住一个原则:带 Paused 字样的状态都能安全恢复,带 Error/Stopped 的则需要重试或重建任务。

2️⃣ 手动暂停单个下载任务:随时可以安全叫停

在下载队列页面对任意任务点暂停即可。实现见 PauseDownloadTaskCommand.cs,它的行为比想象中更细致:

  • 任务正在下载中 → 立即停止底层下载作业,状态置为Paused
  • 任务正在移动文件→ 先停掉移动作业,再置为MovePaused
  • 任务已下载完但还没开始移动 → 直接标记暂停,不会被误当成可执行任务

⚠️ 已移动到一半的文件进度会被保留,暂停不会把已完成的移动重置掉。

3️⃣ 恢复下载任务:Resume 只会续上"可恢复"的进度

点恢复时,StartDownloadTaskCommand.cs 会按以下逻辑找"下一个要跑的任务":

  1. 优先找处于Paused / AutoPaused / MovePaused / AutoMovePaused的子任务——无损续传
  2. 找不到就找第一个未完成的任务
  3. 如果该服务器被你整体暂停了,恢复请求会被直接拒绝(防误触)

也就是说,恢复操作对电影、剧集、整季任务都能正确续上,且剧集任务会把后面排队的兄弟任务一并标记为 Queued,保持顺序不乱。

4️⃣ 一键暂停整台 Plex 服务器的所有下载

换设备、省流量或源服务器维护时,不必逐个暂停。服务器级暂停命令见 PausePlexServerDownloadsCommand.cs:

  • 立即暂停该服务器上所有正在下载/移动的任务
  • 给服务器打上IsDownloadsPausedByUser标记,排队中的任务也不会开跑
  • 想恢复时,使用 ServerResume 下的对应命令一键恢复整服

5️⃣ 关机自动保存:AutoPause 帮你留住进度

正常关闭 Reaparr 前,AutoPauseActiveDownloadsCommand.cs 会扫描所有服务器,把正在下载和移动的任务全部自动暂停(标记为AutoPaused / AutoMovePaused),而且会扫两轮,防止第一轮暂停过程中新启动的任务漏网。下次启动后,这些任务可以直接续传,而不是从头下。

6️⃣ 崩溃恢复:重启后"僵尸任务"自动归位

如果 Reaparr 被强制杀死、断电或崩溃,数据库里可能残留状态还停留在Downloading / Moving的"僵尸任务"。启动时 RecoverInterruptedDownloadsCommand.cs 会自动把它们重置为AutoPaused / AutoMovePaused

  • 下载中的任务 →AutoPaused(保留已下载进度,可续传)
  • 移动中的任务 →AutoMovePaused(保留已移动进度)

![Reaparr 下载队列的自动重试与崩溃恢复机制示意图](https://raw.gitcode.com/gh_mirrors/pl/Reaparr/raw/79ba1da2a2cf34d5f33dbd43b1c9de7ca26885da/export/reaparr/design/generated/ChatGPT Image Aug 17, 2025, 04_43_38 PM.png?utm_source=gitcode_repo_files)

你不需要手动修复数据库,重启后到队列里点恢复即可。

7️⃣ 下载失败怎么重试:Restart 干净地从头再来

遇到IntegrityError(校验失败)、ServerUnreachable(源服务器离线)、DownloadClientError等状态时,用Restart重试。RestartDownloadTaskCommand.cs 的流程是:

  1. 停止该任务组下所有子任务
  2. 从源服务器重新拉取媒体元数据(文件名、质量、路径)
  3. 进度清零、状态回到Queued,重新入队
  4. 如果源媒体已不存在,会明确标记SourceUnavailable,避免无限空转

💡 小提示:Stopped状态的任务不能直接 Resume,必须走 Restart 重新入队。

8️⃣ 队列排队规则:同一服务器上的任务如何依次开跑

队列调度由 DownloadTaskScheduler.cs 基于定时任务框架实现,每个任务对应一个独立的下载作业。关键规则:

  • 新任务启动后,同一服务器上的其他活动下载会被自动暂停,保证带宽和任务顺序可控
  • 每次启动/停止/重启操作后都会发布CheckDownloadQueueEvent,队列监听器随即检查并拉起下一个Queued任务
  • 已完成的任务可以通过 Clear Completed 按任务或按服务器一键清理,保持队列清爽

9️⃣ 移动大文件也能暂停:文件转移阶段的断点恢复

下载完成后还有一段"文件转移"(Moving)阶段:把文件从临时下载目录搬到最终媒体库目录。这个阶段同样支持暂停/恢复:

  • 暂停时置为MovePaused,恢复时置为Queued继续移动
  • 断点恢复的移动逻辑见 MoveFileWithResumeCommand.cs
  • 如果移动失败会标记MoveError,此时建议 Restart 或直接重试恢复

对于几十 GB 的大文件跨磁盘移动,这个特性能避免中断后整个文件重新搬运。

🔟 善用下载日志:排查失败原因的第一现场

每个任务都带完整日志流(由CreateDownloadClientLog写入,可通过 GetDownloadTaskLogsByDownloadTaskIdEndpoint.cs 查询),记录从排队、开始、暂停到重启的每一步:

  • 看状态变化时间线,判断卡在哪一步
  • 搜索Restart workflow关键字,确认重试流程是否完整跑完
  • SourceUnavailable的日志会直接告诉你"找不到源媒体",省去猜测

📌新手最佳实践总结:平时多用"暂停/恢复"保护进度;关机交给 AutoPause 自动处理;失败别慌,先看日志再 Restart;大批量操作前先用服务器级暂停兜底。掌握这 10 个技巧,Reaparr 的下载队列就再也不会让你措手不及。

想进一步了解代码结构,可以看看整体架构说明 AGENTS.md 与项目文档 plans/。

【免费下载链接】ReaparrPlex downloader that brings content from any server to yours!项目地址: https://gitcode.com/gh_mirrors/pl/Reaparr

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询