Configurer
Lors de la création d’une sandbox, transmettez une configurationlifecycle. Cela contrôle le comportement du délai d’expiration et indique si une sandbox en pause peut se réveiller automatiquement.
Options de cycle de vie
Le paramètrelifecycle prend en charge ces champs :
Si la reprise automatique est désactivée ou omise, une sandbox en pause peut toujours être reprise manuellement avec
Sandbox.connect().
Pause automatique
Par défaut, une sandbox est arrêtée lorsque son délai d’expiration arrive à échéance. Pour conserver l’état à la place, définissezonTimeout en JavaScript ou on_timeout en Python afin de mettre en pause à l’expiration.
Reprise automatique
La reprise automatique peut réveiller une sandbox en pause lorsqu’une activité prise en charge arrive. Cela fonctionne uniquement lorsque la sandbox est configurée pour se mettre en pause à l’expiration.Délai d’expiration après une reprise automatique
Après une reprise automatique, la sandbox obtient un délai d’expiration d’au moins cinq minutes. Si le délai d’expiration initial était supérieur à cinq minutes, la valeur initiale plus longue est réutilisée. Le minuteur du délai d’expiration démarre lorsque la sandbox reprend, et non lorsqu’elle a été créée initialement. Exemple avec un délai d’expiration de deux minutes :- La sandbox s’exécute pendant deux minutes, puis se met en pause.
- Une nouvelle activité atteint la sandbox, ce qui provoque sa reprise.
- La sandbox reprise reçoit un délai d’expiration de cinq minutes, car il s’agit du minimum.
- Si rien ne réinitialise le minuteur, la sandbox se remet en pause après cinq minutes.
- La sandbox reprend avec un délai d’expiration d’une heure, car le délai initial est supérieur au minimum de cinq minutes.
Vous pouvez mettre à jour le délai d’expiration après la reprise en utilisant
setTimeout() en JavaScript ou set_timeout() en Python.Ce qui compte comme activité
La reprise automatique peut être déclenchée par des actions SDK et du trafic HTTP. Exemples pris en charge :sandbox.commands.run(...)sandbox.files.read(...)sandbox.files.write(...)- Visiter l’URL d’une application exposée via tunnel
- Envoyer des requêtes à un service exécuté à l’intérieur de la sandbox
Sandbox.connect() au préalable.
Exemple SDK : mettre en pause, puis lire un fichier
Cet exemple crée une sandbox, écrit un fichier, met la sandbox en pause, puis lit le fichier. L’opération de lecture provoque la reprise de la sandbox.Exemple : serveur web avec reprise automatique
La reprise automatique fonctionne bien pour les environnements de prévisualisation et les serveurs web. Après la mise en pause de la sandbox, une requête HTTP entrante vers le service exposé peut la réveiller. L’exemple ci-dessous démarre un serveur HTTP Python simple et affiche une URL de prévisualisation publique. Vous pouvez utilisergetHost() en JavaScript ou get_host() en Python pour récupérer le nom d’hôte public d’un port.
Nettoyage
La reprise automatique reste activée au fil des cycles répétés de reprise et de pause. Chaque reprise démarre une nouvelle période d’expiration, en utilisant au moins cinq minutes ou le délai d’expiration initial plus long. Après la reprise de la sandbox, les clients doivent se reconnecter à tous les services qu’ils utilisaient. Les connexions HTTP, WebSocket, base de données et terminal existantes ne restent pas ouvertes pendant que la sandbox est en pause. Vous pouvez appeler.kill() pour supprimer définitivement la sandbox. Après cela, elle ne peut plus être reprise.