Skip to main content
これらの例では、CWSANDBOX_API_KEY に設定した CoreWeave API アクセストークンを使用します。Forge APIキーによる認証については、はじめにを参照してください。CKS の要件については、配置モードを参照してください。 このガイドでは、サンドボックスのリソース管理とクリーンアップ戦略について説明します。信頼できるクリーンアップにより、スクリプト終了後に孤立したサンドボックスが発生するのを防ぎ、コストを予測可能に保ち、意図しないコンピュートリソースの使用を回避できます。ここで紹介するパターンは、明示的なセッションの有無にかかわらず、1 つまたは複数のサンドボックスを作成するスクリプトに適用されます。

自動クリーンアップ

自動クリーンアップは、サンドボックスの有効期間をPythonの構成要素 (コンテキストマネージャー、またはプロセスの終了時にSDKが閉じるセッション) に結び付けることで、SDKが明示的な stop() 呼び出しなしにリソースを解放できるようにします。セッションやコンテキストマネージャーの外で Sandbox.run() を使用して開始したサンドボックスは、スクリプトの終了後も、メインコマンドが終了するか、ユーザーが停止するか、最大ライフタイムに達するまで実行され続けます。 コンテキストマネージャーは、囲まれたコードが例外を送出する場合でもクリーンアップを保証するため、推奨されるパターンです。SDK はコンテキストが終了するとサンドボックスを停止します:
セッション はすべてのサンドボックスをクリーンアップします:

グローバルなクリーンアップハンドラ

SDK は、プロセスの終了時に、登録済みのセッションが所有するサンドボックスを停止するクリーンアップハンドラを登録します。セッションやコンテキストマネージャーを使わずに作成したスタンドアロンのサンドボックスは、明示的にクリーンアップする必要があります。 SDK は、コードで最初にサンドボックスを作成した時点でこれらのハンドラをインストールします。SIGINT と SIGTERM のハンドラは、Python のメインスレッドから実行された場合にのみインストールされます。アプリケーションで独自にシグナルを処理している場合は、最初のサンドボックスを作成する前に cwsandbox.disable_signal_handlers() を呼び出すか、CWSANDBOX_DISABLE_SIGNAL_HANDLERS=1 を設定してください。この場合も atexit ハンドラは実行されますが、シグナル受信時のサンドボックスの停止はアプリケーション側で行う必要があります。

手動クリーンアップ

サンドボックスまたはセッションをいつリリースするかを明示的に制御する必要がある場合に、手動クリーンアップを使用します。手動クリーンアップでは、停止オプションを渡したり、長時間実行されるコード全体でクリーンアップを調整したりできます。

サンドボックス stop()

Session close()

バッチのクリーンアップ

孤立したサンドボックス management

孤立したサンドボックスとは、作成したプロセスの終了後も意図せず実行され続けているサンドボックスです。意図的に実行し続けているスタンドアロンのサンドボックスは孤立したサンドボックスではありませんが、その所在を把握できなくなると孤立したサンドボックスになります。以下のセクションでは、孤立したサンドボックスを検索しやすくする方法、孤立したサンドボックスをクエリする方法、および管理されたクリーンアップの下に戻す方法について説明します。

ディスカバリーのためのタグ付け

セッションやコンテキストマネージャー内のサンドボックスは、SDK の自動クリーンアップによって、ほとんどの場合孤立せずに済みます。ただし、強制シャットダウン (kill -9) やネットワーク障害が発生した後は、これらのサンドボックスも実行され続けることがあります。また、クリーンアップハンドラはスタンドアロンのサンドボックスを停止しないため、停止し忘れると孤立したサンドボックスになります。タグ を使用して、後で孤立したサンドボックスを発見できるようにします。
適切なタグ付けの方法:
  • project またはアプリケーション名 (my-project)
  • ジョブまたはrunの識別子 (batch-job-123, run-2024-01-15)
  • 環境 (dev, staging, prod)

孤立したサンドボックスを検索する

タグでクエリして、以前の run からサンドボックスを検索します:

セッションの取り込み

孤立したサンドボックス を取り込むと、それをセッションにアタッチし、セッションがその有効期間を管理します。その後、孤立したサンドボックス は新しく作成されたサンドボックスと同じ自動クリーンアップ保証を受けます。session.list() はセッションのデフォルトのタグをフィルターに追加するため、それらのタグが付いたサンドボックスのみが検索されます。セッションのタグを適用せずに検索するには、Sessions ガイドにあるように、Sandbox.list() を使用して、取得した各サンドボックスを取り込みます:

Delete by ID

サンドボックスの ID をすでに知っている場合は、まず list したり取り込んだりせずに直接削除できます:
最終更新日 2026年10月15日