跳到内容
观澜涉川 · 札记EN

使用 retry-cli 工具重试命令

· 约 1 分钟阅读

通常,在控制台运行命令,如果失败,那么会直接返回非0的退出码。有时候,可能希望在命令失败退出后,还能继续重试,直到运行成功。而 demoray/retry-cli 工具就是一个小巧的实现。

安装方法

retry-cli 是在 Github 开源的,使用 Rust 语言编写。作者并没有提供发布版本,因此需要自行编译。截至目前位置,编译retry-cli需要 1.74 及以上的 rustc。因此需要安装最新的 rust 工具链;或者本地版本太旧时,使用 rustup upate更新到最新的版本。然后使用 Cargo 安装:

Terminal window
cargo install retry-cli

编译安装成功后,可使用 --help 选项查看使用说明:

$ retry --help
Usage: retry [OPTIONS] <COMMAND>...
Arguments:
<COMMAND>...
Options:
--retries <RETRIES> [default: 3]
--duration <DURATION> [default: 10]
--method <METHOD> [default: fibonacci] [possible values: fibonacci, fixed, no-delay]
-h, --help Print help
-V, --version Print version

使用举例

比如,我想使用如下命令运行 Tabby 服务:

Terminal window
tabbyml serve --model StarCoder-1B --chat-model Qwen2-1.5B-Instruct --device vulkan

在首次运行这条命令时,它会从远程下载模型。这个模型可能有好几个G的大小。出于某些原因,下载很不稳定,容易失败;但好消息是,tabby 命令可以断点续传。因此,当下载失败时,多重试几次不就好了?

于是,使用 retry-cli 运行这条命令:

Terminal window
retry --retries 200 tabbyml serve -- --model StarCoder-1B --chat-model Qwen2-1.5B-Instruct --device vulkan

注意,在 --model 选项前的 --。这代表此后的选项是传给 serve 命令的;而不是传给 retry 命令。

结尾

如果查看 retry-cli 的源码,就会发现其实现相当简单。