← Sandbox SDK / sandbox / 1-0-preview
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.
Související
- Interpreter API
- Rozšíření
- Migrace
- Stabilní příručka: Používejte interpret kódu