設定
サンドボックスを作成するときに、lifecycle 設定を渡します。これにより、タイムアウトの動作と、一時停止中のサンドボックスを自動的に起動できるかどうかを制御します。
ライフサイクルオプション
lifecycle 設定では、次のフィールドがサポートされています。
自動再開が無効または省略されている場合でも、一時停止中のサンドボックスは
Sandbox.connect() を使用して手動で再開できます。
自動一時停止
デフォルトでは、サンドボックスはタイムアウトが切れると強制終了されます。代わりに状態を保持するには、JavaScript ではonTimeout、Python では on_timeout を設定して、タイムアウト時に一時停止するようにします。
自動再開
自動再開では、サポートされているアクティビティが到着したときに、一時停止中のサンドボックスを起動できます。これは、サンドボックスがタイムアウト時に一時停止するよう設定されている場合にのみ機能します。自動再開後のタイムアウト
自動再開後、サンドボックスには少なくとも 5 分のタイムアウトが設定されます。元のタイムアウトが 5 分より長かった場合は、より長い元の値が再利用されます。 タイムアウトタイマーは、サンドボックスが元々作成されたときではなく、サンドボックスが再開されたときに開始します。 2 分のタイムアウトの例:- サンドボックスが 2 分間実行され、その後一時停止します。
- 新しいアクティビティがサンドボックスに到達し、再開されます。
- 再開されたサンドボックスには、最小値である 5 分のタイムアウトが設定されます。
- タイマーがリセットされなければ、サンドボックスは 5 分後に再び一時停止します。
- 元のタイムアウトが 5 分の最小値より長いため、サンドボックスは 1 時間のタイムアウトで再開されます。
再開後にタイムアウトを更新するには、JavaScript では
setTimeout()、Python では set_timeout() を使用します。アクティビティとして扱われるもの
自動再開は、SDK アクションと HTTP トラフィックによってトリガーできます。 サポートされる例は次のとおりです。sandbox.commands.run(...)sandbox.files.read(...)sandbox.files.write(...)- トンネルされたアプリケーション URL にアクセスする
- サンドボックス内で実行されているサービスにリクエストを送信する
Sandbox.connect() を呼び出す必要はありません。
SDK の例: 一時停止してからファイルを読み取る
この例では、サンドボックスを作成し、ファイルを書き込み、サンドボックスを一時停止してから、そのファイルを読み取ります。読み取り操作によってサンドボックスが再開されます。例: 自動再開を使う Web サーバー
自動再開は、プレビュー環境や Web サーバーに適しています。サンドボックスが一時停止した後、公開されたサービスへの受信 HTTP リクエストによって起動できます。 以下の例では、シンプルな Python HTTP サーバーを起動し、公開プレビュー URL を出力します。ポートの公開ホスト名を取得するには、JavaScript ではgetHost()、Python では get_host() を使用できます。
クリーンアップ
自動再開は、再開と一時停止のサイクルを繰り返しても有効なままです。各再開時に、少なくとも 5 分、またはより長い元のタイムアウトを使用して、新しいタイムアウト期間が開始されます。 サンドボックスが再開された後、クライアントは使用していたサービスに再接続する必要があります。既存の HTTP、WebSocket、データベース、ターミナル接続は、サンドボックスが一時停止している間は開いたままになりません。 サンドボックスを完全に削除するには、.kill() を呼び出します。その後、再開することはできません。