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 passe à un état terminal tel que COMPLETED (code de sortie 0) ou FAILED (erreur lors du démarrage ou de l’exécution). Un sandbox peut également passer à l’état TERMINATED s’il est arrêté de l’extérieur ou s’il dépasse sa durée de vie maximale.
États du sandbox
| État | Description |
|---|---|
| PENDING | La requête de sandbox a été acceptée et est en attente de planification. |
| CREATING | Le conteneur est en cours de provisionnement. |
| RUNNING | Le sandbox est prêt à être utilisé. |
| COMPLETED | Le processus principal s’est terminé avec succès avec le code 0. |
| FAILED | Le sandbox ou son processus principal a rencontré une erreur au démarrage ou pendant l’exécution. |
| TERMINATED | Le sandbox a été arrêté de l’extérieur ou s’est terminé parce qu’il a dépassé sa durée de vie maximale. |
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. Cela 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.
Dans la plupart des cas, 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 automatiquement que le sandbox soit prêt, et le gestionnaire de contexte (with Sandbox.run() as sandbox:) arrête automatiquement 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.