> ## 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 SandboxBetaVersionWarning = () => {
  if (typeof document === "undefined") {
    return null;
  } else {
    return <Warning>注意以下功能需要 <Link href="/sandbox/sandbox-sdk-and-cli#安装-beta-版-sdk" target="self">安装 Beta SDK & CLI</Link> 才能使用。另外 Beta 版功能在合并到稳定版前，可能会经历多次迭代，因此可能存在不稳定性。如果您在使用过程中遇到任何问题，欢迎 <Link href="https://ppio.com/contact" target="_blank">联系我们</Link>。</Warning>;
  }
};

<SandboxBetaVersionWarning />

当您的沙箱实例当前不需要再使用，但后续需要随时能恢复使用时，您可以参考 [文档](/sandbox/sandbox-persistence) 来主动暂停和恢复沙箱实例。

在某些情况下，您希望沙箱实例在 [超时](/sandbox/sandbox) 后自动暂停，并且在您尝试操作沙箱实例（执行命令、运行代码、操作文件等）时，如果该沙箱实例已被暂停，则自动恢复该沙箱实例。此时，您可以使用 **“自动暂停和恢复”** 功能。

## 启用自动暂停功能

您可以在创建沙箱实例时设置 `auto_pause` 参数为`true` 来启用自动暂停功能，沙箱实例超时后会自动暂停，后续可被恢复。

<Warning>
  注意：恢复后的沙箱实例仍会开启自动暂停功能，超时后会再次自动暂停。
</Warning>

<CodeGroup>
  ```js JavaScript & TypeScript icon="js" theme={null}
  import { Sandbox } from 'ppio-sandbox/code-interpreter';

  const sandbox = await Sandbox.betaCreate(
      {
          timeoutMs: 5_000,
          autoPause: true
      },
  );
  console.log('Sandbox created', sandbox.sandboxId)

  console.log('Waiting for 10 seconds...')
  await new Promise(resolve => setTimeout(resolve, 10000));

  const resumedSandbox = await Sandbox.connect(sandbox.sandboxId)
  console.log('Sandbox resumed', resumedSandbox.sandboxId)

  await sandbox.kill()
  ```

  ```python Python icon="python" theme={null}
  from ppio_sandbox.core import Sandbox
  import time

  sandbox = Sandbox.create(
      timeout=5,
      auto_pause=True,
  )
  print('Sandbox created', sandbox.sandbox_id)

  print('Waiting for 10 seconds...')
  time.sleep(10)

  resumed_sandbox = Sandbox.connect(sandbox.sandbox_id)
  print('Sandbox resumed', resumed_sandbox.sandbox_id)

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

## 启用自动恢复功能

您可以在创建沙箱实例时设置 `metadata` 中的 `auto_resume` 键值为 `true` 启用自动恢复功能。启用后，当您尝试操作已暂停的沙箱（如执行命令、运行代码、文件操作等）时，沙箱会自动恢复。

<Warning>
  注意：恢复后的沙箱默认超时时间为 5 分钟，可通过  `setTimeout` 或 `set_timeout` 方法调整沙箱的超时时间。
</Warning>

<CodeGroup>
  ```js JavaScript & TypeScript icon="js" theme={null}
  import { Sandbox } from 'ppio-sandbox/code-interpreter';

  const sandbox = await Sandbox.create(
      {
          metadata:{"auto_resume": "true"}
      }
  );
  console.log('Sandbox created', sandbox.sandboxId)

  await sandbox.betaPause()
  console.log('Sandbox paused', sandbox.sandboxId)

  const result = await sandbox.commands.run('ls -al')
  console.log('Command result', result)

  await sandbox.kill()
  ```

  ```python Python icon="python" theme={null}
  from ppio_sandbox.core import Sandbox

  sandbox = Sandbox.create(
      metadata={
          "auto_resume": "true",
      }
  )
  print('Sandbox created', sandbox.sandbox_id)

  sandbox.beta_pause()
  print('Sandbox paused', sandbox.sandbox_id)

  result = sandbox.commands.run('ls -al')
  print('Command result', result)

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