INTEGRITY Документация

Жизненный цикл

Создавайте контейнеры песочницы и управляйте ими. Получайте экземпляры песочницы, настраивайте параметры и освобождайте ресурсы.

Методы

getSandbox()

Получение или создание экземпляра песочницы по ID.

const sandbox = getSandbox(
  binding: DurableObjectNamespace<Sandbox>,
  sandboxId: string,
  options?: SandboxOptions
): Sandbox

Параметры:

Возвращает: Sandbox инстанс

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()

Включайте или отключайте режим keepAlive динамически после создания sandbox.

await sandbox.setKeepAlive(keepAlive: boolean): Promise<void>

Параметры:

Когда эта функция включена, sandbox автоматически отправляет heartbeat-пинги каждые 30 секунд, чтобы предотвратить вытеснение контейнера. Когда она отключена, sandbox возвращается к обычному режиму сна на основе sleepAfter конфигурации.

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()

Уничтожьте контейнер sandbox и освободите ресурсы.

await sandbox.destroy(): Promise<void>

Немедленно завершает работу контейнера и безвозвратно удаляет всё состояние:

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();
  }
}