Skip to main content
Ces fonctionnalités s’appuient sur la persistance des sandboxes. La pause automatique conserve l’état de la sandbox lorsque la durée de vie maximale expire. La reprise automatique réveille une sandbox en pause lorsqu’une nouvelle activité arrive.

Configurer

Lors de la création d’une sandbox, transmettez une configuration lifecycle. 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ètre lifecycle 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éfinissez onTimeout 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 :
  1. La sandbox s’exécute pendant deux minutes, puis se met en pause.
  2. Une nouvelle activité atteint la sandbox, ce qui provoque sa reprise.
  3. La sandbox reprise reçoit un délai d’expiration de cinq minutes, car il s’agit du minimum.
  4. Si rien ne réinitialise le minuteur, la sandbox se remet en pause après cinq minutes.
Exemple avec un délai d’expiration d’une heure :
  • 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.
Ce comportement se poursuit lors des futurs cycles de pause et de reprise, car les paramètres de cycle de vie restent attachés à la sandbox.
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
Lorsqu’une sandbox est en pause et que la reprise automatique est activée, l’action prise en charge suivante la reprend automatiquement. Vous n’avez pas besoin d’appeler 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 utiliser getHost() 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.
Dernière modification le 10 août 2026