Configurar
Al crear un sandbox, pasa una configuraciónlifecycle. Esto controla el comportamiento del tiempo de espera y si un sandbox en pausa puede activarse automáticamente.
Opciones de ciclo de vida
La configuraciónlifecycle admite estos campos:
Si la reanudación automática está deshabilitada o se omite, un sandbox en pausa aún puede reanudarse manualmente con
Sandbox.connect().
Pausa automática
De forma predeterminada, un sandbox se termina cuando expira su tiempo de espera. Para conservar el estado en su lugar, estableceonTimeout en JavaScript o on_timeout en Python para pausar al agotarse el tiempo de espera.
Reanudación automática
La reanudación automática puede despertar un sandbox en pausa cuando llega actividad compatible. Esto solo funciona cuando el sandbox está configurado para pausarse al agotarse el tiempo de espera.Tiempo de espera después de la reanudación automática
Después de una reanudación automática, el sandbox recibe un tiempo de espera de al menos cinco minutos. Si el tiempo de espera original era superior a cinco minutos, se reutiliza el valor original más largo. El temporizador de tiempo de espera comienza cuando el sandbox se reanuda, no cuando se creó originalmente. Ejemplo con un tiempo de espera de dos minutos:- El sandbox se ejecuta durante dos minutos y luego se pausa.
- Nueva actividad llega al sandbox, lo que hace que se reanude.
- El sandbox reanudado recibe un tiempo de espera de cinco minutos porque ese es el mínimo.
- Si nada restablece el temporizador, el sandbox vuelve a pausarse después de cinco minutos.
- El sandbox se reanuda con un tiempo de espera de una hora, porque el tiempo de espera original es mayor que el mínimo de cinco minutos.
Puedes actualizar el tiempo de espera después de reanudar usando
setTimeout() en JavaScript o set_timeout() en Python.Qué cuenta como actividad
La reanudación automática puede activarse mediante acciones del SDK y tráfico HTTP. Ejemplos compatibles incluyen:sandbox.commands.run(...)sandbox.files.read(...)sandbox.files.write(...)- Visitar una URL de aplicación con túnel
- Enviar solicitudes a un servicio que se ejecuta dentro del sandbox
Sandbox.connect().
Ejemplo de SDK: pausar y luego leer un archivo
Este ejemplo crea un sandbox, escribe un archivo, pausa el sandbox y luego lee el archivo. La operación de lectura hace que el sandbox se reanude.Ejemplo: servidor web con reanudación automática
La reanudación automática funciona bien para entornos de vista previa y servidores web. Después de que el sandbox se pausa, una solicitud HTTP entrante al servicio expuesto puede despertarlo. El siguiente ejemplo inicia un servidor HTTP simple de Python e imprime una URL pública de vista previa. Puedes usargetHost() en JavaScript o get_host() en Python para recuperar el nombre de host público de un puerto.
Limpieza
La reanudación automática permanece habilitada a lo largo de ciclos repetidos de reanudación y pausa. Cada reanudación inicia un nuevo período de tiempo de espera, usando al menos cinco minutos o el tiempo de espera original más largo. Después de que el sandbox se reanuda, los clientes deben volver a conectarse a cualquier servicio que estuvieran usando. Las conexiones HTTP, WebSocket, de base de datos y de terminal existentes no permanecen abiertas mientras el sandbox está en pausa. Puedes llamar a.kill() para eliminar el sandbox de forma permanente. Después de eso, no se puede reanudar.