运行、状态与恢复

Max PrilutskiyCEO 兼联合创始人预计阅读 1 分钟

lingo push 会将一次运行提交到引擎后直接退出;而使用 --wait 时,则会等待运行完成并写出结果。无论采用哪种方式,运行都保存在服务器端,而不在你的终端里——所以你可以直接关闭终端,之后仍能在同一个 checkout 中取回结果。本页将介绍它的工作方式,以及运行失败时如何恢复。

运行状态#

每次 push 都会把它提交的运行记录到当前机器上的一个文件里:

text
~/.lingo/runs/<hash>.json

<hash> 是根据项目的绝对路径生成的,因此每个 checkout 都有各自对应的条目。这个文件保存了运行 ID、引擎和组织信息——足够让后续的 lingo pull 找到输出结果。

这是机器级状态,不是项目状态——它保存在你的主目录中,不会出现在仓库里,也不会被提交。

稍后取回#

由于运行保存在服务器端,你可以先推送,离开去忙别的,等它完成后再取回:

bash
lingo push

# later — same machine, same checkout
lingo pull

pull 会拉取该项目最近一次运行的输出。它也会检查 lockfile 是否存在本地修改;除非你传入 --force,否则它不会覆盖这些改动。参见 lingo pull。

运行状态始终不会离开那台机器,因此另一台机器或 CI 运行器无法 pull 在其他地方推送的运行——它要么因 No saved run state for this project 而失败,要么拉取到那台机器自己上一次推送的运行。要把 CI 中生成的翻译带回你的机器,请在 CI 中提交这些翻译,并 git pull。参见 CI/CD。

移动项目

运行状态文件名是基于项目绝对路径生成的。如果你在 push 和 pull 之间移动了目录,查找就会失效——不过如果需要手动恢复,运行 ID 仍然保存在 ~/.lingo/runs/ 里。

恢复失败的运行#

如果某次运行中途出错——比如超时或临时性的引擎错误——请使用:

bash
lingo resume

resume 会直接重新输出引擎缓存中的结果,而不是重新翻译,因此恢复后的运行不会再次消耗额度。它会告知你哪些内容已成功恢复,以及哪些内容无法重新关联。

如果 resume 提示有目标无法恢复,就用常规 backfill 把缺失内容补齐:

bash
lingo push --backfill-missing

何时该用什么#

场景命令
关闭终端后再取回结果lingo pull
在 CI 中翻译并提交结果lingo push --wait,然后提交
运行中途失败lingo resume
恢复后仍有缺失lingo push --backfill-missing