本节展示如何连接到一个正在运行的沙箱,连接沙箱后,可以使用 SDK 对该沙箱进行操作,包括运行命令、代码等。

1. 获取沙箱 ID

要连接到正在运行的沙箱,您首先需要获取其 ID。
import { Sandbox } from "ppio-sandbox/code-interpreter"

const sandbox = await Sandbox.create({
  timeoutMs: 120_000, // 单位为毫秒。
})

// 列出所有正在运行的沙箱。
const runningSandboxesPaginator = await Sandbox.list({
  query: {
    state: ["running"],
  },
})

const runningSandboxes = await runningSandboxesPaginator.nextItems()
if (runningSandboxes.length === 0) {
  throw new Error("No running sandboxes found")
}
const runningSandboxId = runningSandboxes[0].sandboxId

console.log(`got a running sandbox: ${runningSandboxId}`)

await sandbox.kill()

2. 连接到沙箱

获取到沙箱 ID 后,您可以通过 connect 方法连接到该沙箱。
import { Sandbox } from "ppio-sandbox/code-interpreter"

const sandbox = await Sandbox.create({
  timeoutMs: 120_000, // 单位为毫秒。
})

// 列出所有正在运行的沙箱。
const runningSandboxesPaginator = await Sandbox.list({
  query: {
    state: ["running"],
  },
})

const runningSandboxes = await runningSandboxesPaginator.nextItems()
if (runningSandboxes.length === 0) {
  throw new Error("No running sandboxes found")
}
const runningSandboxId = runningSandboxes[0].sandboxId

// 连接到沙箱。
const connectedSandbox = await Sandbox.connect(runningSandboxId)
console.log("connected to sandbox: ", connectedSandbox.sandboxId)

// 现在您可以继续使用该沙箱
// ...

sandbox.kill()