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
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é
- 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
Sandbox.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
Sandbox.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
Sandbox.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
Sandbox.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.