このレガシーページは、まだ 1.x またはベータ版の SDK 系列を使用しているユーザー向けに保持されています。新しい SDK 2.x のインテグレーションでは、現在のサンドボックスドキュメントに従ってください。
サンドボックスの永続化により、サンドボックスを一時停止し、一時停止した時点と同じ状態から後で再開できます。
これにはサンドボックスのファイルシステムの状態だけでなく、サンドボックスのメモリも含まれます。つまり、実行中のすべてのプロセス、読み込まれた変数、データなどが含まれます。
注意:
- サンドボックスを一時停止するには、RAM 1 GB あたり約 4 秒かかります。
- サンドボックスを再開するには約 1 秒かかります。
- 一時停止されたサンドボックスのデータは、明示的に
kill メソッドを呼び出すまで永続的に保持されます。
サンドボックスの一時停止
サンドボックスを一時停止すると、サンドボックスの ファイルシステム とメモリ状態の両方が保存されます。これには、サンドボックスのファイルシステム内のすべてのファイルと、実行中のすべてのプロセス、読み込まれた変数、データなどが含まれます。
注意: 一時停止後の短い遷移期間一時停止は非同期操作です。beta_pause() を呼び出した後、サンドボックスはバックグラウンドで一時停止します。この遷移期間中、一時停止が完了する前は次のようになります。
- 読み取り専用操作(例:
get_info、list): 通常どおり返ります。ステータスは paused と表示されます
- 実行操作(例:
commands.run、サンドボックスの公開 URL へのアクセス): エラーを返します。これは想定された動作です。再試行する前に一時停止の完了を待ってください(所要時間はメモリサイズによって異なります。上記の注意を参照)
- 再開操作(
connect): サンドボックスを再開する前に、一時停止の完了を自動的に待機します。手動でのポーリングや再試行は不要です
サンドボックスの再開
サンドボックスを再開すると、一時停止した時点と同じ状態になります。
つまり、サンドボックスのファイルシステム内のすべてのファイルが復元され、実行中のすべてのプロセス、読み込まれた変数、データなども復元されます。
beta_pause() を呼び出した直後に connect() を呼び出すと、connect() はサンドボックスを再開する前に一時停止の完了を自動的に待機します。手動でのポーリングは不要です。このプロセス全体は呼び出し元に対して透過的です。
破棄された、または存在しないサンドボックスを再開しようとした場合:
- JavaScript SDK は
NotFoundError をスローします
- Python SDK は
NotFoundException をスローします
一時停止中のサンドボックスの一覧表示
Sandbox.list メソッドを呼び出し、state クエリパラメーターを指定することで、一時停止中のすべてのサンドボックスを一覧表示できます。
このメソッドの使用方法の詳細については、List Sandboxes を参照してください。
一時停止中のサンドボックスの削除
サンドボックスインスタンスで kill メソッドを呼び出すことで、一時停止中のサンドボックスを削除できます。
サンドボックスのタイムアウト
サンドボックスを再開すると、サンドボックスのタイムアウトはサンドボックスのデフォルトのタイムアウト(5 分)にリセットされます。
次のように、Sandbox.connect() メソッドにカスタムタイムアウトを渡すことができます。
ネットワーク
サンドボックス内でサービス(たとえばサーバー)を実行している状態でサンドボックスを一時停止すると、そのサービスは外部からアクセスできなくなり、すべてのクライアントが切断されます。
サンドボックスを再開すると、サービスには再びアクセスできるようになりますが、クライアントを再接続する必要があります。