运行、状态与恢复
lingo push 会将一次运行提交到引擎后直接退出;而使用 --wait 时,则会等待运行完成并写出结果。无论采用哪种方式,运行都保存在服务器端,而不在你的终端里——所以你可以直接关闭终端,之后仍能在同一个 checkout 中取回结果。本页将介绍它的工作方式,以及运行失败时如何恢复。
运行状态#
每次 push 都会把它提交的运行记录到当前机器上的一个文件里:
~/.lingo/runs/<hash>.json<hash> 是根据项目的绝对路径生成的,因此每个 checkout 都有各自对应的条目。这个文件保存了运行 ID、引擎和组织信息——足够让后续的 lingo pull 找到输出结果。
这是机器级状态,不是项目状态——它保存在你的主目录中,不会出现在仓库里,也不会被提交。
稍后取回#
由于运行保存在服务器端,你可以先推送,离开去忙别的,等它完成后再取回:
lingo push
# later — same machine, same checkout
lingo pullpull 会拉取该项目最近一次运行的输出。它也会检查 lockfile 是否存在本地修改;除非你传入 --force,否则它不会覆盖这些改动。参见 lingo pull。
运行状态始终不会离开那台机器,因此另一台机器或 CI 运行器无法 pull 在其他地方推送的运行——它要么因 No saved run state for this project 而失败,要么拉取到那台机器自己上一次推送的运行。要把 CI 中生成的翻译带回你的机器,请在 CI 中提交这些翻译,并 git pull。参见 CI/CD。
移动项目
运行状态文件名是基于项目绝对路径生成的。如果你在 push 和 pull 之间移动了目录,查找就会失效——不过如果需要手动恢复,运行 ID 仍然保存在 ~/.lingo/runs/ 里。
恢复失败的运行#
如果某次运行中途出错——比如超时或临时性的引擎错误——请使用:
lingo resumeresume 会直接重新输出引擎缓存中的结果,而不是重新翻译,因此恢复后的运行不会再次消耗额度。它会告知你哪些内容已成功恢复,以及哪些内容无法重新关联。
如果 resume 提示有目标无法恢复,就用常规 backfill 把缺失内容补齐:
lingo push --backfill-missing何时该用什么#
| 场景 | 命令 |
|---|---|
| 关闭终端后再取回结果 | lingo pull |
| 在 CI 中翻译并提交结果 | lingo push --wait,然后提交 |
| 运行中途失败 | lingo resume |
| 恢复后仍有缺失 | lingo push --backfill-missing |