INTEGRITY Dokumentace

Code interpreter

Na @next, interpret kódu je volitelné rozšíření, nikoli metody přímo na holém Sandbox. Názvy metod odpovídají stabilnímu interpretu. Připojíte se jednou a poté voláte sandbox.interpreter.*. runCode vrátí čistá serializovatelná data přes hranici mezi Workerem a Durable Object.

Signatury a typy: Interpreter API.

Připojit

import { Sandbox as BaseSandbox } from "@cloudflare/sandbox";
import { withInterpreter } from "@cloudflare/sandbox/interpreter";

export class Sandbox extends BaseSandbox {
	interpreter = withInterpreter(this);
}
import { Sandbox as BaseSandbox } from "@cloudflare/sandbox";
import { withInterpreter } from "@cloudflare/sandbox/interpreter";

export class Sandbox extends BaseSandbox<Env> {
	interpreter = withInterpreter(this);
}

Tuto třídu exportujte ze svého Workeru. Sidecar se zřídí při prvním použití.

Obrázek

Jazyk Obrázek
JavaScript / TypeScript Výchozí image sandboxu (nebo libovolná varianta s JS runtime)
Python -python image varianta

Použijte stejný balíček preview Workeru a stejný řádek image kontejneru. Viz Dockerfile.

Spuštění kódu

A kontext uchovává proměnné a importy, dokud ji neodstraníte nebo dokud se kontejner nenahradí.

const sandbox = getSandbox(env.Sandbox, "user-123");

const context = await sandbox.interpreter.createCodeContext({
	language: "python",
	cwd: "/workspace",
});

await sandbox.interpreter.runCode("x = 2", { context });
const result = await sandbox.interpreter.runCode("x * 21", { context });

if (result.error) {
	console.error(result.error.name, result.error.message);
} else {
	console.log(result.results, result.logs.stdout);
}
const sandbox = getSandbox(env.Sandbox, "user-123");

const context = await sandbox.interpreter.createCodeContext({
	language: "python",
	cwd: "/workspace",
});

await sandbox.interpreter.runCode("x = 2", { context });
const result = await sandbox.interpreter.runCode("x * 21", { context });

if (result.error) {
	console.error(result.error.name, result.error.message);
} else {
	console.log(result.results, result.logs.stdout);
}

Pokud vynecháte context, runCode používá výchozí kontext pro daný jazyk (výchozí jazyk: python). Jazyky: python, javascript, typescript.

Pro pole výsledků, streamování (runCodeStream), a metody kontextu pro výpis a mazání, viz Interpreter API.

Kontexty existují pouze v aktuální kontejner. Po zastavení nebo nahrazení vytvořte nové. Viz Životní cyklus sandboxu.