← Sandbox SDK / sandbox / api
Životní cyklus
Vytvářejte a spravujte kontejnery sandboxu. Získávejte instance sandboxu, konfigurujte možnosti a uklízejte prostředky.
Metody
getSandbox()
Získejte nebo vytvořte instanci sandboxu podle ID.
const sandbox = getSandbox(
binding: DurableObjectNamespace<Sandbox>,
sandboxId: string,
options?: SandboxOptions
): SandboxParametry:
binding- Binding na jmenný prostor Durable Object z prostředí vašeho WorkerusandboxId- Jedinečný identifikátor tohoto sandboxu. Stejné ID vždy vrátí stejnou instanci sandboxu. V aplikacích určených uživatelům přiřaďte ID vždy jen jednomu uživateli.options(volitelné) - Viz SandboxOptions pro všechny dostupné možnosti:enableDefaultSession- Použijte výchozí session pro operace bez explicitníhosessionId. Nastavte nafalsepro vyhodnocení každého volání izolovaně (výchozí:true)sleepAfter- Doba nečinnosti před automatickým uspáním (výchozí:"10m")keepAlive- Zcela zabrání automatickému uspání. Zůstává v platnosti i po hibernaci (výchozí:false)containerTimeouts- Nakonfigurujte časové limity spuštění kontejnerunormalizeId- ID sandboxu malými písmeny kvůli kompatibilitě s náhledovými URL adresami (výchozí:false)
Vrací: Sandbox instance
import { getSandbox } from "@cloudflare/sandbox";
export default {
async fetch(request, env) {
const sandbox = getSandbox(env.Sandbox, "user-123");
const result = await sandbox.exec("python script.py");
return Response.json(result);
},
};import { getSandbox } from '@cloudflare/sandbox';
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const sandbox = getSandbox(env.Sandbox, 'user-123');
const result = await sandbox.exec('python script.py');
return Response.json(result);
}
};setKeepAlive()
Po vytvoření sandboxu můžete dynamicky povolit nebo zakázat režim keepAlive.
await sandbox.setKeepAlive(keepAlive: boolean): Promise<void>Parametry:
keepAlive-trueaby se zabránilo automatickému uspání,falseaby umožnil běžné chování při uspání
Pokud je tato funkce zapnutá, sandbox automaticky odesílá heartbeat pingy každých 30 sekund, aby se zabránilo odstranění kontejneru. Pokud je vypnutá, sandbox se vrátí k běžnému chování usínání podle sleepAfter konfigurace.
const sandbox = getSandbox(env.Sandbox, "user-123");
// Enable keepAlive for a long-running process
await sandbox.setKeepAlive(true);
await sandbox.startProcess("python long_running_analysis.py");
// Later, disable keepAlive when done
await sandbox.setKeepAlive(false);const sandbox = getSandbox(env.Sandbox, 'user-123');
// Enable keepAlive for a long-running process
await sandbox.setKeepAlive(true);
await sandbox.startProcess('python long_running_analysis.py');
// Later, disable keepAlive when done
await sandbox.setKeepAlive(false);destroy()
Zničte kontejner sandboxu a uvolněte prostředky.
await sandbox.destroy(): Promise<void>Okamžitě ukončí kontejner a natrvalo smaže veškerý stav:
- Všechny soubory v
/workspace,/tmp, a/home - Všechny běžící procesy
- Všechny relace (včetně výchozí relace)
- Síťová připojení a vystavené porty
async function executeCode(code) {
const sandbox = getSandbox(env.Sandbox, `temp-${Date.now()}`);
try {
await sandbox.writeFile("/tmp/code.py", code);
const result = await sandbox.exec("python /tmp/code.py");
return result.stdout;
} finally {
await sandbox.destroy();
}
}async function executeCode(code: string): Promise<string> {
const sandbox = getSandbox(env.Sandbox, `temp-${Date.now()}`);
try {
await sandbox.writeFile('/tmp/code.py', code);
const result = await sandbox.exec('python /tmp/code.py');
return result.stdout;
} finally {
await sandbox.destroy();
}
}Související zdroje
- Koncept životního cyklu sandboxu - Pochopení životního cyklu a stavu kontejneru
- Konfigurace možností sandboxu - Nakonfigurujte
keepAlivea další možnosti - Sessions API - Vytvářejte spouštěcí kontexty v rámci sandboxu