実行、状態、復旧

Max PrilutskiyCEO 兼 共同創業者読了目安 1分

lingo push は実行をエンジンに送信して終了します。--wait を使うと、完了まで待って出力を書き込みます。どちらの場合も、実行はターミナル内ではなくサーバー上に残るため、ターミナルを閉じても、あとから同じチェックアウトで結果を取得できます。このページでは、その仕組みと、実行が失敗したときの復旧方法を説明します。

実行状態#

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

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

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

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

あとから取得する#

実行はサーバー側にあるため、送信してその場を離れても、完了後に取得できます。

bash
lingo push

# later — same machine, same checkout
lingo pull

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

実行状態はそのマシンから外に出ないため、別のマシンやシーアイランナーは、ほかの場所で送信された実行を pull できません。No saved run state for this project で失敗するか、そのマシン自身の直前の送信を取得します。シーアイで作成した翻訳を自分のマシンに反映するには、シーアイでそれらをコミットしてから git pull してください。CI/CD を参照してください。

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

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

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

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

bash
lingo resume

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

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

bash
lingo push --backfill-missing

状況別の使い分け#

状況コマンド
ターミナルを閉じたあとで結果を取得するlingo pull
シーアイで翻訳して結果をコミットするlingo push --wait してからコミット
実行が途中で失敗したlingo resume
再開後に抜けが残ったlingo push --backfill-missing