Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Esta característica se encuentra en su versión beta. Para habilitar la vista previa de esta función en el espacio de trabajo, activa la opción Databricks Sandbox en la página Vista previa del espacio de trabajo. Consulte Administrar versiones preliminares de Azure Databricks.
Databricks actualmente no cobra por el uso de esta función. Sin embargo, el coste y el precio de las funciones en la Beta pueden cambiar.
El SDK Databricks para Python incluye un cliente sandbox para crear sandboxes, ejecutar comandos en ellos y gestionar su ciclo de vida. Esta página explica esas operaciones. Para una visión general de Databricks Sandbox, véase Databricks Sandbox.
Instalación del SDK
Instala o actualiza el SDK Databricks para Python, que incluye el cliente sandbox:
pip install --upgrade databricks-sdk
Crear un Cliente de Espacio de Trabajo
Todas las operaciones sandbox se ejecutan a través de un WorkspaceClient. Crea un WorkspaceClient usando credenciales obtenidas de tu entorno, un perfil de configuración o un host y un token explícitos:
from databricks.sdk import WorkspaceClient
# Resolve credentials from the environment or the default config profile:
w = WorkspaceClient()
# Or select a specific ~/.databrickscfg profile:
w = WorkspaceClient(profile="my-workspace")
# Or pass the host and token explicitly:
w = WorkspaceClient(host="https://<workspace>.cloud.databricks.com", token="dapi...")
Para más información sobre cómo configurar y autenticar el SDK, consulte Databricks SDK para Python.
Crear un sandbox
Crea un sandbox por ID. Opcionalmente puedes configurar la especificación de cómputo, como el tiempo de espera de inactividad que controla cuánto tiempo permanece el sandbox funcionando sin actividad:
from google.protobuf.duration_pb2 import Duration
from databricks.sdk.service.sandbox import ComputeSpec, Sandbox, SandboxSpec
created = w.sandbox.create_sandbox(
sandbox=Sandbox(
spec=SandboxSpec(compute=ComputeSpec(inactivity_timeout=Duration(seconds=900))),
),
sandbox_id="my-sandbox",
)
print(created.name) # "sandboxes/my-sandbox"
Obtener y listar entornos de pruebas
Recupera un único sandbox por nombre, o lista todos los sandboxes:
sandbox = w.sandbox.get_sandbox("sandboxes/my-sandbox")
print(sandbox.status.state) # SandboxState.SANDBOX_STATE_RUNNING
for sandbox in w.sandbox.list_sandboxes():
print(sandbox.name, sandbox.status.state if sandbox.status else None)
Ejecuta un comando en un sandbox
Ejecuta un comando en un sandbox y lee su salida. El primer argumento es el nombre del sandbox, seguido del programa a ejecutar y sus argumentos. Este es un exec directo sin shell, así que para ejecutar un comando de shell, invoca /bin/bash -c. Pasa cualquier variable de entorno a través de envs:
from google.protobuf.duration_pb2 import Duration
resp = w.sandbox.execute_command_sync(
"sandboxes/my-sandbox",
"/bin/bash",
args=["-c", "echo hello world && whoami"],
envs={"MY_VAR": "value"},
execution_timeout=Duration(seconds=30),
)
print(resp.status) # ExecuteCommandStatus.EXECUTE_COMMAND_STATUS_COMPLETED
print(resp.exit_code) # 0
print(resp.stdout) # "hello world\nsandbox-agent\n"
print(resp.stderr)
print(resp.truncated) # True if the output was truncated
Actualizar los metadatos del sandbox
Puedes actualizar el nombre de visualización y el tiempo de espera de inactividad de un sandbox. Solo se aceptan las siguientes rutas de campo. Cualquier otra ruta devuelve INVALID_PARAMETER_VALUE:
display_namespec.compute.inactivity_timeout
from databricks.sdk.common.types.fieldmask import FieldMask
from databricks.sdk.service.sandbox import ComputeSpec, Sandbox, SandboxSpec
from google.protobuf.duration_pb2 import Duration
# Rename the sandbox
w.sandbox.update_sandbox(
name="sandboxes/my-sandbox",
sandbox=Sandbox(display_name="renamed sandbox"),
update_mask=FieldMask(["display_name"]),
)
# Extend the inactivity timeout
w.sandbox.update_sandbox(
name="sandboxes/my-sandbox",
sandbox=Sandbox(spec=SandboxSpec(compute=ComputeSpec(inactivity_timeout=Duration(seconds=1800)))),
update_mask=FieldMask(["spec.compute.inactivity_timeout"]),
)
Para y reinicia un sandbox
Detener un sandbox para liberar su computación mientras preserva tu directorio personal:
w.sandbox.stop_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_STOPPED
Empieza el sandbox de nuevo para reanudar el trabajo:
w.sandbox.start_sandbox("sandboxes/my-sandbox") # Moves to SANDBOX_STATE_RUNNING
Eliminar un espacio aislado
Elimina un sandbox cuando termines. Eliminar un entorno de pruebas borra su directorio de inicio y detiene la facturación del entorno de pruebas:
w.sandbox.delete_sandbox("sandboxes/my-sandbox")