> ## Documentation Index
> Fetch the complete documentation index at: https://ppio.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 连接到正在运行的沙箱

export const SandboxConfigHint = () => {
  if (typeof document === "undefined") {
    return null;
  } else {
    return <Note>在运行本文档中的示例代码前，请确保您已正确配置环境变量，详情请参考 <a href="/sandbox/get-start#配置环境变量">配置环境变量</a>。</Note>;
  }
};

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

<SandboxConfigHint />

## 1. 获取沙箱 ID

要连接到正在运行的沙箱，您首先需要获取其 ID。

<CodeGroup>
  ```js JavaScript & TypeScript icon="js" theme={null}
  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()
  ```

  ```python Python icon="python" theme={null}
  from ppio_sandbox.code_interpreter import Sandbox, SandboxQuery, SandboxState

  # 创建一个沙箱，并保持运行 60 秒。
  sandbox = Sandbox.create(
    timeout=120,  # 单位为秒。
  )

  # 列出所有正在运行的沙箱。
  running_sandboxes_paginator = Sandbox.list(query=SandboxQuery(state=[SandboxState.RUNNING]))

  running_sandboxes = running_sandboxes_paginator.next_items()
  if len(running_sandboxes) == 0:
    raise Exception("No running sandboxes found")
  running_sandbox_id = running_sandboxes[0].sandbox_id

  # 获取您想要连接的沙箱的 ID。
  print("got a running sandbox: ", running_sandbox_id)

  sandbox.kill()
  ```
</CodeGroup>

## 2. 连接到沙箱

获取到沙箱 ID 后，您可以通过 `connect` 方法连接到该沙箱。

<CodeGroup>
  ```js JavaScript & TypeScript icon="js" theme={null}
  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()
  ```

  ```python Python icon="python" theme={null}
  from ppio_sandbox.code_interpreter import Sandbox, SandboxQuery, SandboxState

  # 创建一个沙箱，并保持运行 60 秒。
  sandbox = Sandbox.create(
    timeout=120,  # 单位为秒。
  )

  # 列出所有正在运行的沙箱。
  running_sandboxes_paginator = Sandbox.list(query=SandboxQuery(state=[SandboxState.RUNNING]))

  running_sandboxes = running_sandboxes_paginator.next_items()
  if len(running_sandboxes) == 0:
    raise Exception("No running sandboxes found")
  running_sandbox_id = running_sandboxes[0].sandbox_id

  # 连接到沙箱。
  sandbox = Sandbox.connect(running_sandbox_id)
  print("got a running sandbox: ", sandbox.sandbox_id)

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

  sandbox.kill()
  ```
</CodeGroup>
