Skip to main content
これらの例では、CWSANDBOX_API_KEY に設定した CoreWeave API アクセストークンを使用します。Forge APIキーによる認証については、はじめにを参照してください。CKS の要件については、配置モードを参照してください。 このガイドでは、CoreWeave サンドボックス Python SDK (cwsandbox) における同期パターンと非同期パターンの選択方法を説明し、一般的な各操作の同期形式と非同期形式を示します。 SDK の内部実装は Async のみです。sync/Async の柔軟性は結果の取得方法によるものです。sync の場合は .result() を、Async の場合は await を使用します。

クイック決定ガイド

経験則: シンプルにするために sync パターン (.result()) を使用してください。すでに async コードベースにいる場合にのみ await に切り替えてください。

Core concept: OperationRef

ほとんどの SDK メソッドは OperationRef[T] を返します。これは .result() 可能かつ await 可能なラッパーです。 どちらのパスも同じ例外を発生させます。
Sandbox.exec() は Process を返します。これは OperationRef[ProcessResult] を拡張し、ストリーミングと stdin をサポートします。
async コンテキストでは .result() を使用しないでください。.result() を呼び出すとスレッドがブロックされます。async コンテキストでは イベントループがブロックされ、アプリケーションが deadlock する可能性があります。代わりに await を使用してください。

自動開始の動作

session.sandbox() は開始されていないサンドボックスを返します。サンドボックスは、必要となる最初の操作で自動的に開始されます: 自動開始をトリガーするもの: exec(), read_file(), write_file(), wait(), wait_until_complete() 自動開始しないもの: get_status() (送出される例外 SandboxNotRunningError), stop() (開始されていなければ no-op)

オペレーション

サンドボックスを作成する

Sandbox.run() は内部で start().result() を呼び出すため、イベントループをブロックします。 非同期コードでは Sandbox(...) で構築し、async with または await sandbox を使用して RUNNING ステータスに到達してください。ブロックは発生しません。

start()

exec()

read_file()

write_file()

stop()

wait()

wait() はサンドボックスが RUNNING ステータスに到達するまでブロックします。これは Sync 版のみです。ブロッキングが意図されているためです。async コードでは、await sandbox で同じことを実現できます。

wait_until_complete()

get_status()

get_status() は同期版のみです。API から現在のステータスを取得します。

Sandbox.list()

Sandbox.from_id()

Sandbox.delete()

session.list()

session.from_id()

Stream stdout

stdin をストリーミングする

stdin=True を指定して stdin を有効にします。生のバイトを書き込むには write()、テキスト行を書き込むには writeline() を使用し、 EOF を通知するには close() を使用します。

cwsandbox.results()

cwsandbox.results() は同期版のみのバッチヘルパーです。1つ以上の OperationRef オブジェクトに対して .result() を呼び出します。

cwsandbox.wait()

cwsandbox.wait() は同期版のみです。Sandbox、OperationRef、または Process オブジェクトのシーケンスを待機し、(done, pending) を返します。サンドボックスは RUNNING ステータスに到達したときに解決され、完了時には解決されません。

@session.function()

並列実行

同期 API は、操作が設計上ノンブロッキングであるため、並列実行をサポートします。exec()、read_file()、write_file() などのメソッドは即座に返ります。.result() を呼び出したときのみブロックします。 Sandbox.run() は、バックエンド が起動リクエストを受け入れるまでブロックします (内部で start().result() を呼び出します) 。並列起動には、session.sandbox() (最初の操作で自動起動) を使用するか、start() の ref を収集します:

Jupyter ノートブック

SDK がデーモンスレッド内で独自のバックグラウンドイベントループを実行するため、 同期 API は Jupyter で nest_asyncio なしで動作します:
Jupyter で async を使用する場合、Jupyter にはイベントループが組み込まれているため、await をそのまま使用できます。

エラー処理

同期と非同期のどちらの処理経路でも、同じ例外が送出されます。.result() は基になる操作で発生した例外を 再送出し、await も同様に動作します。例外階層全体と復旧パターンについては、Sandbox SDK の一般的なエラーメッセージの意味 を参照してください。
最終更新日 2026年10月15日