---
title: "AsyncSandbox"
hideTitleOnPage: true
---

## AsyncSandbox

```python
class AsyncSandbox(SandboxDto)
```

Daytona のサンドボックスを表します。

**属性**:

- `fs` _AsyncFileSystem_ - ファイルシステム操作インターフェース。
- `git` _AsyncGit_ - Git 操作インターフェース。
- `process` _AsyncProcess_ - プロセス実行インターフェース。
- `computer_use` _AsyncComputerUse_ - デスクトップ自動化のためのコンピューター使用インターフェース。
- `id` _str_ - サンドボックスの一意の識別子。
- `organization_id` _str_ - サンドボックスの組織 ID。
- `snapshot` _str_ - サンドボックスの作成に使用された Daytona のスナップショット。
- `user` _str_ - サンドボックス内で実行中の OS ユーザー。
- `env` _Dict[str, str]_ - サンドボックス内で設定される環境変数。
- `labels` _Dict[str, str]_ - サンドボックスに付与されたカスタムラベル。
- `public` _bool_ - サンドボックスが公開アクセス可能かどうか。
- `target` _str_ - サンドボックスを実行するランナーのターゲット（リージョン）。
- `cpu` _int_ - サンドボックスに割り当てられた CPU 数。
- `gpu` _int_ - サンドボックスに割り当てられた GPU 数。
- `memory` _int_ - サンドボックスに割り当てられたメモリ容量（GiB）。
- `disk` _int_ - サンドボックスに割り当てられたディスク容量（GiB）。
- `state` _SandboxState_ - サンドボックスの現在の状態（例: "started", "stopped"）。
- `error_reason` _str_ - サンドボックスがエラー状態の場合のエラーメッセージ。
- `backup_state` _SandboxBackupStateEnum_ - サンドボックスのバックアップ状態。
- `backup_created_at` _str_ - バックアップの作成時刻。
- `auto_stop_interval` _int_ - 自動停止の間隔（分）。
- `auto_archive_interval` _int_ - 自動アーカイブの間隔（分）。
- `auto_delete_interval` _int_ - 自動削除の間隔（分）。
- `runner_domain` _str_ - サンドボックスのランナーのドメイン名。
- `volumes` _List[str]_ - サンドボックスに接続されたボリューム。
- `build_info` _str_ - 動的ビルドから作成された場合のビルド情報。
- `created_at` _str_ - サンドボックスの作成時刻。
- `updated_at` _str_ - サンドボックスの最終更新時刻。
- `network_block_all` _bool_ - サンドボックスの全ネットワークアクセスをブロックするかどうか。
- `network_allow_list` _str_ - サンドボックスで許可される CIDR ネットワークアドレスのカンマ区切りリスト。

#### AsyncSandbox.__init__

```python
def __init__(sandbox_dto: SandboxDto, sandbox_api: SandboxApi,
             toolbox_api: ToolboxApi, code_toolbox: SandboxCodeToolbox)
```

新しいサンドボックスインスタンスを初期化します。

**引数**:

- `id` _str_ - サンドボックスの一意の識別子。
- `instance` _SandboxInstance_ - 基盤となるサンドボックスインスタンス。
- `sandbox_api` _SandboxApi_ - サンドボックス操作用の API クライアント。
- `toolbox_api` _ToolboxApi_ - ツールボックス操作用の API クライアント。
- `code_toolbox` _SandboxCodeToolbox_ - 言語別のツールボックス実装。

#### AsyncSandbox.refresh_data

```python
async def refresh_data() -> None
```

API からサンドボックスのデータを更新します。

**例**:

```python
await sandbox.refresh_data()
print(f"Sandbox {sandbox.id}:")
print(f"State: {sandbox.state}")
print(f"Resources: {sandbox.cpu} CPU, {sandbox.memory} GiB RAM")
```

#### AsyncSandbox.get_user_root_dir

```python
@intercept_errors(message_prefix="Failed to get sandbox root directory: ")
async def get_user_root_dir() -> str
```

サンドボックス内でログイン中のユーザーのルートディレクトリのパスを取得します。

**戻り値**:

- `str` - ログイン中のユーザー向けサンドボックスのルートディレクトリへの絶対パス。
  

**例**:

```python
root_dir = await sandbox.get_user_root_dir()
print(f"Sandbox root: {root_dir}")
```

#### AsyncSandbox.create_lsp_server

```python
def create_lsp_server(language_id: LspLanguageId,
                      path_to_project: str) -> AsyncLspServer
```

新しい Language Server Protocol (LSP) サーバーインスタンスを作成します。

LSP サーバーは、コード補完や診断などの言語固有機能を提供します。

**引数**:

- `language_id` _LspLanguageId_ - 言語サーバーの種類（例: LspLanguageId.PYTHON）。
- `path_to_project` _str_ - プロジェクトのルートディレクトリへのパス。相対パスはユーザーの
  ルートディレクトリを基準に解決されます。
  

**戻り値**:

- `LspServer` - 指定した言語向けに構成された新しい LSP サーバーインスタンス。
  

**例**:

```python
lsp = sandbox.create_lsp_server("python", "workspace/project")
```

#### AsyncSandbox.set\_labels

```python
@intercept_errors(message_prefix="Failed to set labels: ")
async def set_labels(labels: Dict[str, str]) -> Dict[str, str]
```

サンドボックスにラベルを設定します。

ラベルは、サンドボックスを整理・識別するために使えるキーと値のペアです。

**引数**:

- `labels` _Dict[str, str]_ - サンドボックスのラベルを表すキーと値のペアのディクショナリ。
  

**戻り値**:

  Dict[str, str]: 更新後のサンドボックスのラベルを含むディクショナリ。
  

**例**:

```python
new_labels = sandbox.set_labels({
    "project": "my-project",
    "environment": "development",
    "team": "backend"
})
print(f"Updated labels: {new_labels}")
```

#### AsyncSandbox.start

```python
@intercept_errors(message_prefix="Failed to start sandbox: ")
@with_timeout(error_message=lambda self, timeout: (
    f"Sandbox {self.id} failed to start within the {timeout} seconds timeout period"
))
async def start(timeout: Optional[float] = 60)
```

サンドボックスを起動し、準備完了まで待機します。

**引数**:

- `timeout` _Optional[float]_ - 最大待機時間（秒）。0 はタイムアウトなし。デフォルトは 60 秒。
  

**例外**:

- `DaytonaError` - タイムアウトが負の場合。サンドボックスの起動に失敗した場合、またはタイムアウトした場合。
  

**例**:

```python
sandbox = daytona.get("my-sandbox-id")
sandbox.start(timeout=40)  # 最大 40 秒待機
print("Sandbox started successfully")
```

#### AsyncSandbox.stop

```python
@intercept_errors(message_prefix="Failed to stop sandbox: ")
@with_timeout(error_message=lambda self, timeout: (
    f"Sandbox {self.id} failed to stop within the {timeout} seconds timeout period"
))
async def stop(timeout: Optional[float] = 60)
```

サンドボックスを停止し、完全に停止するまで待機します。

**引数**:

- `timeout` _Optional[float]_ - 最大待機時間（秒）。0 はタイムアウトなし。デフォルトは 60 秒。
  

**例外**:

- `DaytonaError` - タイムアウトが負の場合、またはサンドボックスの停止に失敗した場合／タイムアウトした場合。
  

**例**:

```python
sandbox = daytona.get("my-sandbox-id")
sandbox.stop()
print("Sandbox stopped successfully")
```

#### AsyncSandbox.delete

```python
@intercept_errors(message_prefix="Failed to remove sandbox: ")
async def delete(timeout: Optional[float] = 60) -> None
```

サンドボックスを削除します。

**引数**:

- `timeout` _Optional[float]_ - サンドボックス削除のタイムアウト（秒）。0 はタイムアウトなし。
  デフォルトは 60 秒。

#### AsyncSandbox.wait\_for\_sandbox\_start

```python
@intercept_errors(
    message_prefix="Failure during waiting for sandbox to start: ")
@with_timeout(error_message=lambda self, timeout: (
    f"Sandbox {self.id} failed to become ready within the {timeout} seconds timeout period"
))
async def wait_for_sandbox_start(timeout: Optional[float] = 60) -> None
```

サンドボックスが「started」状態になるまで待機します。サンドボックスのステータスをポーリングし、
「started」になるか、エラーが発生するか、タイムアウトするまで待機します。

**引数**:

- `timeout` _Optional[float]_ - 最大待機時間（秒）。0 はタイムアウトなし。デフォルトは 60 秒。
  

**例外**:

- `DaytonaError` - タイムアウトが負の場合、またはサンドボックスの起動に失敗／タイムアウトした場合。

#### AsyncSandbox.wait\_for\_sandbox\_stop

```python
@intercept_errors(
    message_prefix="Failure during waiting for sandbox to stop: ")
@with_timeout(error_message=lambda self, timeout: (
    f"Sandbox {self.id} failed to become stopped within the {timeout} seconds timeout period"
))
async def wait_for_sandbox_stop(timeout: Optional[float] = 60) -> None
```

サンドボックスが「stopped」状態になるまで待機します。サンドボックスのステータスをポーリングし、
「stopped」状態に到達するか、エラーが発生するか、タイムアウトするまで待機します。最大 60 秒間、
サンドボックスの停止を待機します。

**引数**:

- `timeout` _Optional[float]_ - 待機する最大時間（秒）。0 はタイムアウトなし。デフォルトは 60 秒。
  

**送出**:

- `DaytonaError` - タイムアウトが負の場合。サンドボックスの停止に失敗した場合、またはタイムアウトした場合。

#### AsyncSandbox.set\_autostop\_interval

```python
@intercept_errors(message_prefix="Failed to set auto-stop interval: ")
async def set_autostop_interval(interval: int) -> None
```

サンドボックスの自動停止間隔を設定します。

指定した間隔のあいだアイドル（新規イベントなし）が続くと、サンドボックスは自動的に停止します。
イベントには、SDK を通じたサンドボックスのあらゆる状態変更や操作が含まれます。
サンドボックスのプレビューを用いた操作は含まれません。

**引数**:

- `interval` _int_ - 自動停止までの非アクティブ時間（分）。
  0 に設定すると自動停止を無効化。デフォルトは 15。
  

**送出**:

- `DaytonaError` - interval が負の場合
  

**例**:

```python
# 1 時間後に自動停止
sandbox.set_autostop_interval(60)
# もしくは自動停止を無効化
sandbox.set_autostop_interval(0)
```

#### AsyncSandbox.set\_auto\_archive\_interval

```python
@intercept_errors(message_prefix="Failed to set auto-archive interval: ")
async def set_auto_archive_interval(interval: int) -> None
```

サンドボックスの自動アーカイブ間隔を設定します。

指定した間隔のあいだ連続して停止状態が続くと、サンドボックスは自動的にアーカイブされます。

**引数**:

- `interval` _int_ - 連続停止中のサンドボックスが自動アーカイブされるまでの分数。
  0 に設定すると最大の間隔になります。デフォルトは 7 日。
  

**送出**:

- `DaytonaError` - interval が負の場合
  

**例**:

```python
# 1 時間後に自動アーカイブ
sandbox.set_auto_archive_interval(60)
# もしくは最大の間隔を使用
sandbox.set_auto_archive_interval(0)
```

#### AsyncSandbox.set\_auto\_delete\_interval

```python
@intercept_errors(message_prefix="Failed to set auto-delete interval: ")
async def set_auto_delete_interval(interval: int) -> None
```

サンドボックスの自動削除間隔を設定します。

指定した間隔のあいだ連続して停止状態が続くと、サンドボックスは自動的に削除されます。

**引数**:

- `interval` _int_ - 連続停止中のサンドボックスが自動削除されるまでの分数。
  自動削除を無効化するには負の値を設定。停止時に即時削除するには 0 を設定。
  既定では自動削除は無効です。
  

**例**:

```python
# 1 時間後に自動削除
sandbox.set_auto_delete_interval(60)
# もしくは停止時に即時削除
sandbox.set_auto_delete_interval(0)
# もしくは自動削除を無効化
sandbox.set_auto_delete_interval(-1)
```

#### AsyncSandbox.get\_preview\_link

```python
@intercept_errors(message_prefix="Failed to get preview link: ")
async def get_preview_link(port: int) -> PortPreviewUrl
```

指定したポートのサンドボックスに対するプレビューリンクを取得します。ポートが閉じている場合は
自動的に開かれます。プライベートなサンドボックスの場合は、URL へのアクセスを許可するトークンが
含まれます。

**引数**:

- `port` _int_ - プレビューリンクを開くポート。
  

**戻り値**:

- `PortPreviewUrl` - プレビューリンクのレスポンスオブジェクト。`url`
  と `token`（プライベートなサンドボックスへのアクセス用）を含みます。
  

**例**:

```python
preview_link = sandbox.get_preview_link(3000)
print(f"Preview URL: {preview_link.url}")
print(f"Token: {preview_link.token}")
```

#### AsyncSandbox.archive

```python
@intercept_errors(message_prefix="Failed to archive sandbox: ")
async def archive() -> None
```

サンドボックスをアーカイブし、非アクティブ化して状態を保持します。サンドボックスが
アーカイブされると、ファイルシステムの状態全体がコスト効率の高いオブジェクトストレージに移され、
長期間にわたってサンドボックスを保持できます。アーカイブ状態と停止状態の
トレードオフは、サンドボックスのサイズに応じて、アーカイブされたサンドボックスの起動により
時間がかかる点です。アーカイブ前にサンドボックスは停止している必要があります。


## リソース

```python
@dataclass
class Resources()
```

サンドボックスのリソース構成。

**属性**:

- `cpu` _Optional[int]_ - 割り当てるCPUコア数。
- `memory` _Optional[int]_ - 割り当てるメモリ容量（GiB）。
- `disk` _Optional[int]_ - 割り当てるディスク容量（GiB）。
- `gpu` _Optional[int]_ - 割り当てるGPU数。
  

**例**:

```python
resources = Resources(
    cpu=2,
    memory=4,  # 4GiB RAM
    disk=20,   # 20GiB disk
    gpu=1
)
params = CreateSandboxFromImageParams(
    image=Image.debian_slim("3.12"),
    language="python",
    resources=resources
)
```

