PENDING, passe à CREATING pendant l’approvisionnement du conteneur, puis entre dans l’état RUNNING lorsqu’il est prêt à être utilisé.
Si vous démarrez un sandbox avec une commande principale, cette commande devient le processus principal du sandbox. Lorsque le processus principal se termine, le sandbox entre dans un état terminal tel que COMPLETED (code de sortie 0) ou FAILED (erreur au démarrage ou pendant l’exécution). Un sandbox peut également entrer dans l’état TERMINATED s’il est arrêté de l’extérieur ou dépasse sa durée de vie maximale.
États du sandbox
Le tableau suivant récapitule les états d’un sandbox :
La plupart des opérations exigent que le sandbox soit à l’état
RUNNING. Cependant, de nombreuses opérations attendent que le sandbox soit prêt avant de continuer.
Une fois qu’un sandbox entre dans un état terminal, il n’est plus disponible pour des opérations supplémentaires.
Attendre que le sandbox soit prêt ou terminé
Les sections suivantes décrivent les deux méthodes permettant d’attendre les changements d’état du sandbox et précisent quand utiliser chacune d’elles. Utilisez différentes méthodes d’attente en fonction de vos besoins :- Utilisez
Sandbox.wait()pour attendre que le sandbox soit prêt à l’emploi. - Utilisez
Sandbox.wait_until_complete()pour attendre la fin du processus principal du sandbox.
Attendre qu’un sandbox démarre
UtilisezSandbox.wait() pour attendre explicitement que le sandbox atteigne l’état RUNNING. Cette méthode est utile pour diagnostiquer les problèmes de démarrage ou lorsque vous souhaitez distinguer les échecs de démarrage des erreurs survenant dans des commandes ultérieures.
Par exemple, le code suivant crée un sandbox, attend qu’il soit prêt, puis exécute une commande :
Attendre la fin d’un sandbox
UtilisezSandbox.wait_until_complete() lorsque le processus principal du sandbox représente l’intégralité de la charge de travail et que vous souhaitez attendre la fin de cette tâche.
Sandbox.run("python", "train.py") et souhaitez que le cycle de vie du sandbox corresponde à l’exécution de cette commande.
Lorsque le processus principal se termine, le sandbox passe à un état terminal. Une exécution réussie se termine généralement par COMPLETED. Si le processus échoue, le sandbox peut passer à FAILED.
Si vous devez plutôt exécuter des commandes de manière interactive, utilisez un gestionnaire de contexte avec Sandbox.exec() :
Contrôle explicite du cycle de vie
Utilisez des méthodes telles queSandbox.wait() et Sandbox.stop() lorsque vous avez besoin de contrôler explicitement le cycle de vie du sandbox.
En général, vous n’avez pas besoin d’appeler ces méthodes directement. Des opérations telles que Sandbox.exec(), Sandbox.read_file() et Sandbox.write_file() attendent que le sandbox soit prêt, et le gestionnaire de contexte (with Sandbox.run() as sandbox:) arrête le sandbox à la fin du bloc.
Arrêter le sandbox
UtilisezSandbox.stop() lorsque vous n’avez plus besoin du sandbox, pour mettre fin à un processus de longue durée ou pour libérer des ressources avant que le sandbox n’atteigne sa durée de vie maximale.