Exécutions, état et reprise

Max PrilutskiyPDG et cofondateur2 min de lecture

lingo push envoie une exécution au moteur puis se ferme — ou, avec --wait, attend qu’elle se termine et écrit les résultats. Dans tous les cas, l’exécution reste sur le serveur, pas dans votre terminal — vous pouvez donc fermer le terminal et récupérer les résultats plus tard, depuis le même checkout. Cette page explique comment cela fonctionne et comment reprendre la main lorsqu’une exécution échoue.

État de l’exécution#

Chaque push enregistre l’exécution qu’il a soumise dans un fichier propre à la machine :

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

Le <hash> est dérivé du chemin absolu du projet ; chaque checkout a donc sa propre entrée. Le fichier contient l’ID de l’exécution, le moteur et l’organisation — de quoi permettre à un lingo pull ultérieur de retrouver les sorties.

Il s’agit d’un état propre à la machine, pas au projet — il se trouve dans votre répertoire personnel, jamais dans le dépôt, et n’est pas versionné.

Récupération ultérieure#

Comme l’exécution reste côté serveur, vous pouvez l’envoyer, passer à autre chose, puis la récupérer une fois terminée :

bash
lingo push

# later — same machine, same checkout
lingo pull

pull récupère les sorties de l’exécution la plus récente pour ce projet. Il vérifie aussi le lockfile pour détecter les modifications locales et refuse de les écraser, sauf si vous passez --force. Voir lingo pull.

L’état de l’exécution ne quitte jamais la machine. Une autre machine ou un exécuteur CI ne peut donc pas pull une exécution envoyée depuis ailleurs — soit l’opération échoue avec No saved run state for this project, soit elle récupère la dernière exécution envoyée depuis cette machine. Pour récupérer sur votre machine des traductions produites en CI, validez-les dans la CI puis git pull. Voir CI/CD.

Déplacer le projet

Le nom du fichier d’état d’exécution est basé sur le chemin absolu du projet. Si vous déplacez le répertoire entre push et pull, la recherche ne trouvera rien — l’ID de l’exécution se trouve toujours dans ~/.lingo/runs/ si vous devez le récupérer manuellement.

Récupérer une exécution en échec#

Si une exécution échoue en cours de route — dépassement de délai, erreur transitoire du moteur — utilisez :

bash
lingo resume

resume réémet les sorties à partir des résultats en cache du moteur au lieu de retraduire ; une exécution reprise ne redépense donc pas de crédits. La commande indique ce qu’elle a pu récupérer et ce qui n’a pas pu être rattaché.

Si resume signale des cibles qu’il n’a pas pu récupérer, complétez-les avec un backfill classique :

bash
lingo push --backfill-missing

Quel cas, quelle commande#

SituationCommande
Récupérer les résultats après avoir fermé le terminallingo pull
Traduire en CI et valider les résultatslingo push --wait, puis valider
Une exécution a échoué en cours de routelingo resume
La reprise a laissé des manqueslingo push --backfill-missing