実行、状態、復旧

更新日:3 か月前 · 読了目安 1分

lingo push は実行をエンジンに送信し、完了まで待機します。ただし、実行はターミナル内ではなくサーバー上で保持されるため、ターミナルを閉じても、別のマシンに切り替えても、CI に引き継いでも、あとから結果を取得できます。このページでは、その仕組みと、実行が失敗した場合の復旧方法を説明します。

実行状態#

push を実行するたびに、送信した実行がマシンごとのファイルに記録されます。

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

<hash>絶対プロジェクトパスをもとに生成されるため、チェックアウトごとに個別のエントリが作成されます。このファイルには実行 ID、エンジン、org が保存され、あとから lingo pull で出力を見つけるのに十分な情報が含まれます。

これはプロジェクト状態ではなく、マシンごとの状態です。保存先はホームディレクトリで、リポジトリ内には置かれず、コミットもされません。

別のマシンで pull する#

実行はサーバー側にあるため、ある環境で push し、別の環境で pull できます。

bash
# laptop
lingo push

# CI, or a second machine with the same checkout + credentials
lingo pull

pull はこのプロジェクトの最新の実行結果を取得します。また、lockfile を確認してローカルの編集がないかをチェックし、--force を指定しない限り、それらを上書きしません。詳しくは lingo pull を参照してください。

プロジェクトを移動した場合

実行状態ファイルのファイル名は、絶対プロジェクトパスをキーにしています。push と pull の間でディレクトリを移動すると、参照に失敗します。その場合でも、手動で復旧する必要があれば、実行 ID は ~/.lingo/runs/ に残っています。

失敗した実行を復旧する#

実行が途中でエラーになった場合 — タイムアウトや一時的なエンジンエラーなど — 次を使用します。

bash
lingo resume

resume は再翻訳する代わりに、エンジンにキャッシュされた結果から出力を再生成します。つまり、復旧した実行でクレジットが再度消費されることはありません。あわせて、復旧できたものと、再び関連付けできなかったものも報告されます。

resume が復旧できなかったターゲットを報告した場合は、通常のバックフィルで補完してください。

bash
lingo push --backfill-missing

状況別の使い分け#

状況コマンド
ターミナルを閉じたあとで結果を取得するlingo pull
ノートPCで push して、CI で pull するlingo push のあとに lingo pull
実行が途中で失敗したlingo resume
再開後に抜けが残ったlingo push --backfill-missing