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

# Sandbox-Persistenz

export const SandboxConfigHint = () => {
  if (typeof document === "undefined") {
    return null;
  } else {
    return <Note>Before running the example code in this document, please ensure you have properly configured environment variables. For details, please refer to <a href="/docs/de/guides/sandbox-your-first-agent-sandbox#configure-environment-variables">Configure Environment Variables</a>.</Note>;
  }
};

Mit Sandbox-Persistenz können Sie eine Sandbox pausieren und später mit demselben Dateisystem- und Speicherzustand fortsetzen. Dies ist nützlich für langlaufende Agentenaufgaben, interaktive Apps und Workflows, die Leerlaufzeiten überstehen müssen, ohne Rechenressourcen aktiv zu halten.

Wenn eine Sandbox pausiert wird:

* In der Sandbox erstellte Dateien bleiben erhalten.
* Der In-Memory-Zustand bleibt erhalten, einschließlich laufender Prozesse und Variablen.
* Netzwerkverbindungen werden unterbrochen, bis die Sandbox fortgesetzt wird.
* Die Sandbox bleibt gespeichert, bis Sie sie fortsetzen und beenden oder sie beenden, während sie pausiert ist.

Informationen zum automatischen Pausieren bei Zeitüberschreitung und zum automatischen Fortsetzen bei Aktivität finden Sie unter [Automatisches Pausieren und Fortsetzen](/docs/de/guides/sandbox-auto-resume). Informationen zum Leerlauf-Timeout finden Sie unter [Leerlauf-Timeout](/docs/de/guides/sandbox-idle-timeout).

<SandboxConfigHint />

<Warning>
  Bitte beachten Sie:

  * Das Pausieren der Sandbox dauert etwa 4 Sekunden pro 1 GB RAM.
  * Das Fortsetzen der Sandbox dauert etwa 1 Sekunde.
  * Die Daten einer pausierten Sandbox bleiben erhalten, bis Sie explizit die Methode `kill` aufrufen.
</Warning>

## Eine Sandbox pausieren

Sie können die Methode `pause` aufrufen, wenn Sie den aktuellen Zustand speichern möchten.

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

  const sandbox = await Sandbox.create()
  await sandbox.commands.run('echo hello > /tmp/message.txt')

  const sandboxId = sandbox.sandboxId
  await sandbox.pause()

  console.log('Sandbox paused', sandboxId)
  ```

  ```python Python icon="python" theme={"system"}
  from novita_sandbox.code_interpreter import Sandbox

  sandbox = Sandbox.create()
  sandbox.commands.run("echo hello > /tmp/message.txt")

  sandbox_id = sandbox.sandbox_id
  sandbox.pause()

  print('Sandbox paused', sandbox_id)
  ```
</CodeGroup>

## Eine Sandbox fortsetzen

Verwenden Sie die gespeicherte Sandbox-ID, um erneut eine Verbindung herzustellen. Wenn die Sandbox pausiert ist, können Sie die Methode `connect` verwenden, um sie fortzusetzen, bevor sie zurückgegeben wird.

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

  const sandbox = await Sandbox.connect(sandboxId)
  const result = await sandbox.commands.run('cat /tmp/message.txt')
  console.log(result.stdout)

  await sandbox.kill()
  ```

  ```python Python icon="python" theme={"system"}
  from novita_sandbox.code_interpreter import Sandbox

  sandbox = Sandbox.connect(sandbox_id)
  result = sandbox.commands.run("cat /tmp/message.txt")
  print(result.stdout)

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

Sie können beim erneuten Verbinden ein neues `timeout` übergeben.

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

  const sandbox = await Sandbox.connect(sandboxId, { timeoutMs: 600_000 })

  await sandbox.kill()
  ```

  ```python Python icon="python" theme={"system"}
  from novita_sandbox.code_interpreter import Sandbox

  sandbox = Sandbox.connect(sandbox_id, timeout=600)

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

Bei einer laufenden Sandbox wird das Timeout nur aktualisiert, wenn das neue Timeout länger ist als das vorhandene. Bei einer pausierten Sandbox gilt das Timeout nach dem Fortsetzen.

## Pausierte Sandboxes auflisten

Sie können die Methode `list` mit einem Statusfilter verwenden, um pausierte Sandboxes zu finden. Weitere Informationen zur Verwendung der Methode finden Sie unter [Sandboxes auflisten](/docs/de/guides/sandbox-list).

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

  const paginator = Sandbox.list({
    query: {
      state: ['paused'],
    },
  })

  while (paginator.hasNext) {
    const items = await paginator.nextItems()
    for (const info of items) {
      console.log(info.sandboxId, info.state, info.metadata)
    }
  }
  ```

  ```python Python icon="python" theme={"system"}
  from novita_sandbox.code_interpreter import Sandbox
  from novita_sandbox.core import SandboxQuery, SandboxState

  paginator = Sandbox.list(
      query=SandboxQuery(state=[SandboxState.PAUSED])
  )

  while paginator.has_next:
      for info in paginator.next_items():
          print(info.sandbox_id, info.state, info.metadata)
  ```
</CodeGroup>

Metadatenfilter sind nützlich, wenn Sie Sandboxes finden müssen, die von einem bestimmten Benutzer, einer bestimmten Sitzung oder einem bestimmten Job erstellt wurden.

## Eine pausierte Sandbox löschen

Pausierte Sandboxes bleiben gespeichert, bis Sie sie entfernen. Sie können die Methode `kill` verwenden, um pausierte Sandboxes zu entfernen, die Sie nicht mehr benötigen.

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

  await Sandbox.kill(sandboxId)
  ```

  ```python Python icon="python" theme={"system"}
  from novita_sandbox.code_interpreter import Sandbox

  Sandbox.kill(sandbox_id)
  ```
</CodeGroup>

## Persistenz vs. Snapshots

Persistenz dient dazu, dieselbe Sandbox später fortzusetzen. Verwenden Sie sie, wenn Ihnen die genaue Sandbox-ID und der aktuelle Laufzeitstatus wichtig sind.

Snapshots dienen dazu, wiederverwendbare gespeicherte Zustände zu erstellen. Verwenden Sie einen Snapshot, wenn Sie eine oder mehrere neue Sandboxes aus demselben erfassten Dateisystem- und Speicherzustand starten möchten.

Informationen zu wiederverwendbaren Zuständen finden Sie unter [Sandbox-Snapshot](/docs/de/guides/sandbox-snapshot).

## Netzwerk

Wenn Sie eine Sandbox pausieren, in der ein Dienst ausgeführt wird, ist der Dienst von außerhalb der Sandbox nicht mehr erreichbar, und alle verbundenen Clients werden getrennt. Nachdem Sie die Sandbox fortgesetzt haben, ist der Dienst wieder erreichbar, aber Clients müssen sich erneut verbinden.
