Skip to content

fix: 失败的下载任务不再导致程序提前中止#35

Merged
Ovler-Young merged 3 commits into
saveweb:mainfrom
TripleCamera:fix-exit-immediately
Jul 23, 2026
Merged

fix: 失败的下载任务不再导致程序提前中止#35
Ovler-Young merged 3 commits into
saveweb:mainfrom
TripleCamera:fix-exit-immediately

Conversation

@TripleCamera

Copy link
Copy Markdown
Contributor

biliarchiver 最初的行为是:一旦有下载任务失败,程序会立即退出。93d3635 修改了这一行为,使得单个任务失败时,其他任务能够继续执行,并等待所有任务完成后再报错。但由于实现逻辑有误,程序还是会在有下载任务失败时立即退出。

这个 commit 修复了错误的逻辑。

Closes #34.

biliarchiver 最初的行为是:一旦有下载任务失败,程序会立即退出。`93d3635` 修改了这一行为,使得单个任务失败时,其他任务能够继续执行,并等待所有任务完成后再报错。但由于实现逻辑有误,程序还是会在有下载任务失败时立即退出。

这个 commit 修复了错误的逻辑。

Closes saveweb#34.
@TripleCamera

Copy link
Copy Markdown
Contributor Author

修好了一个 bug,又出现了一个:下载任务失败时,失败的下载任务的进度条会一直保留(显示进度为 100%),直到程序结束。

我研究一下。

@TripleCamera

Copy link
Copy Markdown
Contributor Author

修好了一个 bug,又出现了一个:下载任务失败时,失败的下载任务的进度条会一直保留(显示进度为 100%),直到程序结束。

我研究一下。

结论:这是 bilix 的问题,没法修复。(bilix 的逻辑也是一旦有任务失败程序立即中止,出现这种问题也是意料之中的事情。)

https://github.com/HFrost0/bilix/blob/bb5b234cdfe3fafc4db9d992b91091f2edf791e5/bilix/sites/bilibili/downloader.py#L345
https://github.com/HFrost0/bilix/blob/bb5b234cdfe3fafc4db9d992b91091f2edf791e5/bilix/sites/bilibili/downloader.py#L438

bilix CLI 在启动时会开启进度条显示:

```python
try:
    CLIProgress.start()  # start progress
```

在结束时会关闭进度条显示:

```python
finally:
    CLIProgress.stop()  # stop rich progress to ensure cursor is repositioned
```

而且使用了 `try ... finally ...`,可以确保程序结束时进度条不会残留在控制台输出中。

biliarchiver 虽然在启动时开启了进度条显示,但没有在结束时关闭进度条显示,导致程序结束时进度条残留。
Comment thread biliarchiver/cli_tools/bili_archive_bvids.py Outdated
@Ovler-Young

Copy link
Copy Markdown
Contributor

93d3635 中处理的是上传时的错误,下载时的错误当时的确没handle住

biliarchiver 会在任何一个下载任务出错时立即输出错误,同时在程序结束时再输出一遍第一个错误。后者是不必要的,删掉。

同时优化输出内容并标记为可翻译。
@Ovler-Young
Ovler-Young merged commit ea906b7 into saveweb:main Jul 23, 2026
3 checks passed
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.

单个任务失败会导致程序中止

2 participants