> ## 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.

# Veraltete 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>;
  }
};

<Warning>
  Diese Legacy-Seite wird für Benutzer beibehalten, die noch die SDK-Reihe 1.x oder die Beta-SDK-Reihe verwenden. Neue SDK-2.x-Integrationen sollten der aktuellen Sandbox-Dokumentation folgen.
</Warning>

Mit der Sandbox-Persistenz kannst du deine Sandbox pausieren und später in demselben Zustand fortsetzen, in dem sie sich beim Pausieren befand.

Dies umfasst nicht nur den Zustand des Dateisystems der Sandbox, sondern auch den Speicher der Sandbox. Das bedeutet: alle laufenden Prozesse, geladenen Variablen, Daten usw.

<SandboxConfigHint />

<Warning>
  Bitte beachte:

  * 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 dauerhaft erhalten, bis du explizit die Methode `kill` aufrufst.
</Warning>

## Sandbox pausieren

Wenn du eine Sandbox pausierst, werden sowohl das <Link href="/docs/de/guides/sandbox-filesystem">Dateisystem</Link> der Sandbox als auch ihr Speicherzustand gespeichert. Dazu gehören alle Dateien im Dateisystem der Sandbox sowie alle laufenden Prozesse, geladenen Variablen, Daten usw.

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

  const sandbox = await Sandbox.create()
  console.log('Sandbox created', sandbox.sandboxId)

  // Pause the sandbox.
  // You can save the sandbox ID in your database
  // to resume the sandbox later
  const result = await sandbox.betaPause()
  console.log('Sandbox paused', sandbox.sandboxId, result)

  await sandbox.kill()
  ```

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

  sandbox = Sandbox.create()
  print('Sandbox created', sandbox.sandbox_id)

  # You can save the sandbox ID in your database
  # to resume the sandbox later
  sandbox.beta_pause()
  print('Sandbox paused', sandbox.sandbox_id)

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

<Warning>
  **Hinweis: Kurze Übergangsphase nach dem Pausieren**

  Das Pausieren ist ein asynchroner Vorgang. Nach dem Aufruf von `beta_pause()` pausiert die Sandbox im Hintergrund.

  Während dieser Übergangsphase, bevor das Pausieren abgeschlossen ist:

  * **Nur-Lese-Operationen** (z. B. `get_info`, `list`): werden normal zurückgegeben; der Status wird als `paused` angezeigt
  * **Ausführungsoperationen** (z. B. `commands.run`, Zugriff auf öffentliche Sandbox-URLs): geben Fehler zurück — das ist erwartetes Verhalten. Warte, bis das Pausieren abgeschlossen ist, bevor du es erneut versuchst (die Dauer variiert je nach Speichergröße, siehe Hinweis oben)
  * **Fortsetzungsoperation** (`connect`): wartet automatisch, bis das Pausieren abgeschlossen ist, bevor die Sandbox fortgesetzt wird — kein manuelles Polling oder erneutes Versuchen erforderlich
</Warning>

## Sandbox fortsetzen

Wenn du eine Sandbox fortsetzt, befindet sie sich in demselben Zustand, in dem sie sich beim Pausieren befand.
Das bedeutet, dass alle Dateien im Dateisystem der Sandbox wiederhergestellt werden und alle laufenden Prozesse, geladenen Variablen, Daten usw. wiederhergestellt werden.

<Tip>
  Wenn du `connect()` unmittelbar nach dem Aufruf von `beta_pause()` aufrufst, wartet `connect()` automatisch, bis das Pausieren abgeschlossen ist, bevor die Sandbox fortgesetzt wird. Es ist kein manuelles Polling erforderlich — der gesamte Vorgang ist für den Aufrufer transparent.
</Tip>

<Warning>
  Wenn du versuchst, eine Sandbox fortzusetzen, die zerstört wurde oder nicht existiert:

  * Das JavaScript SDK löst `NotFoundError` aus
  * Das Python SDK löst `NotFoundException` aus
</Warning>

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

  const sandbox = await Sandbox.create()
  console.log('Sandbox created', sandbox.sandboxId)

  // Pause the sandbox.
  // You can save the sandbox ID in your database
  // to resume the sandbox later
  const result = await sandbox.betaPause()
  console.log('Sandbox paused', sandbox.sandboxId, result)

  // Resume the sandbox.
  // Even if called before pausing completes, connect() automatically waits for the pause to finish.
  const resumedSandbox = await sandbox.connect()
  console.log('Sandbox resumed', resumedSandbox.sandboxId)

  await sandbox.kill()
  ```

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

  sandbox = Sandbox.create()
  print('Sandbox created', sandbox.sandbox_id)

  # Pause the sandbox.
  # You can save the sandbox ID in your database
  # to resume the sandbox later
  sandbox.beta_pause()
  print('Sandbox paused', sandbox.sandbox_id)

  # Resume the sandbox.
  # Even if called before pausing completes, connect() automatically waits for the pause to finish.
  connectedSandbox = sandbox.connect()
  print('Sandbox resumed', connectedSandbox.sandbox_id)

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

## Pausierte Sandboxes auflisten

Du kannst alle pausierten Sandboxes auflisten, indem du die Methode `Sandbox.list` aufrufst und den Query-Parameter `state` angibst.
Weitere Informationen zur Verwendung der Methode findest du unter [List Sandboxes](/docs/de/guides/sandbox-list).

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

  const sandbox = await Sandbox.create()

  // List all paused sandboxes.
  const paginator = Sandbox.list({ query: { state: ['paused'] } })

  // Get all paused sandboxes.
  const sandboxes: SandboxInfo[] = []
  while (paginator.hasNext) {
    const items = await paginator.nextItems()
    sandboxes.push(...items)
  }

  console.log('all paused sandboxes', sandboxes)

  await sandbox.kill()
  ```

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

  sandbox = Sandbox.create()

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

  # List all paused sandboxes.
  paginator = Sandbox.list(query=SandboxQuery(state=[SandboxState.PAUSED]))

  # Get all paused sandboxes.
  sandboxes: list[SandboxInfo] = []
  while paginator.has_next:
    items = paginator.next_items()
    sandboxes.extend(items)

  print('all paused sandboxes', sandboxes)

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

## Pausierte Sandboxes entfernen

Du kannst pausierte Sandboxes entfernen, indem du die Methode `kill` auf der Sandbox-Instanz aufrufst.

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

  const sandbox = await Sandbox.create()
  console.log('Sandbox created', sandbox.sandboxId)

  // Pause the sandbox.
  await sandbox.betaPause()

  // Kill the paused sandbox.
  await sandbox.kill()
  ```

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

  sandbox = Sandbox.create()

  # Pause the sandbox.
  sandbox.beta_pause()

  # Kill the paused sandbox.
  sandbox.kill()
  ```
</CodeGroup>

## Timeout der Sandbox

Wenn du eine Sandbox fortsetzt, wird der Timeout der Sandbox auf den Standard-Timeout einer Sandbox zurückgesetzt - 5 Minuten.

Du kannst der Methode `Sandbox.connect()` wie folgt einen benutzerdefinierten Timeout übergeben:

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

  const sandbox = await Sandbox.create()

  const connectedSandbox = await Sandbox.connect(sandbox.sandboxId, { timeoutMs: 60 * 1000 })
  console.log('Sandbox connected', connectedSandbox.sandboxId)

  await sandbox.kill()
  ```

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

  sandbox = Sandbox.create()

  connectedSandbox = Sandbox.connect(sandbox.sandbox_id, timeout=60) # 60 seconds
  print('Sandbox connected', connectedSandbox.sandbox_id)

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

## Netzwerk

Wenn ein Dienst (zum Beispiel ein Server) innerhalb deiner Sandbox läuft und du die Sandbox pausierst, ist der Dienst von außen nicht erreichbar und alle Clients werden getrennt.
Wenn du die Sandbox fortsetzt, ist der Dienst wieder erreichbar, aber du musst die Clients erneut verbinden.
