lingo push は実行をエンジンに送信し、完了まで待機します。ただし、実行はターミナル内ではなくサーバー上で保持されるため、ターミナルを閉じても、別のマシンに切り替えても、CI に引き継いでも、あとから結果を取得できます。このページでは、その仕組みと、実行が失敗した場合の復旧方法を説明します。
実行状態#
push を実行するたびに、送信した実行がマシンごとのファイルに記録されます。
~/.lingo/runs/<hash>.json<hash> は絶対プロジェクトパスをもとに生成されるため、チェックアウトごとに個別のエントリが作成されます。このファイルには実行 ID、エンジン、org が保存され、あとから lingo pull で出力を見つけるのに十分な情報が含まれます。
これはプロジェクト状態ではなく、マシンごとの状態です。保存先はホームディレクトリで、リポジトリ内には置かれず、コミットもされません。
別のマシンで pull する#
実行はサーバー側にあるため、ある環境で push し、別の環境で pull できます。
# laptop
lingo push
# CI, or a second machine with the same checkout + credentials
lingo pullpull はこのプロジェクトの最新の実行結果を取得します。また、lockfile を確認してローカルの編集がないかをチェックし、--force を指定しない限り、それらを上書きしません。詳しくは lingo pull を参照してください。
プロジェクトを移動した場合
実行状態ファイルのファイル名は、絶対プロジェクトパスをキーにしています。push と pull の間でディレクトリを移動すると、参照に失敗します。その場合でも、手動で復旧する必要があれば、実行 ID は ~/.lingo/runs/ に残っています。
失敗した実行を復旧する#
実行が途中でエラーになった場合 — タイムアウトや一時的なエンジンエラーなど — 次を使用します。
lingo resumeresume は再翻訳する代わりに、エンジンにキャッシュされた結果から出力を再生成します。つまり、復旧した実行でクレジットが再度消費されることはありません。あわせて、復旧できたものと、再び関連付けできなかったものも報告されます。
resume が復旧できなかったターゲットを報告した場合は、通常のバックフィルで補完してください。
lingo push --backfill-missing状況別の使い分け#
| 状況 | コマンド |
|---|---|
| ターミナルを閉じたあとで結果を取得する | lingo pull |
| ノートPCで push して、CI で pull する | lingo push のあとに lingo pull |
| 実行が途中で失敗した | lingo resume |
| 再開後に抜けが残った | lingo push --backfill-missing |
