让我们看看它是什么样子的。
部署不同类型的应用程序
有状态的工作负载:执行 AI 生成的代码
首先,我们来看一个有状态的例子。
假设您正在构建一个平台,最终用户可以运行由LLM生成的代码。由于这些代码不 乌拉圭电报号码数据 受信任,因此每个用户都需要自己的安全沙盒。此外,您希望用户能够按顺序运行多个请求,这些请求可能会写入本地文件或保存内存状态。
为此,您需要为每个用户会话按需创建一个容器,然后将后续请求路由到该容器。具体操作如下:
首先,编写一些基本的 Wrangler 配置,然后通过 Worker 将请求路由到容器:
import { Container } from "cloudflare:workers";
export default {
async fetch(request, env) {
const url = new URL(request.url);
if (url.pathname.startsWith("/execute-code")) {
const { sessionId, messages } = await request.json();
// pass in prompt to get the code from Llama 4
const codeToExecute = await env.AI.run("@cf/meta/llama-4-scout-17b-16e-instruct", { messages });
// get a different container for each user session
const id = env.CODE_EXECUTOR.idFromName(sessionId);
const sandbox = env.CODE_EXECUTOR.get(id);
// execute a request on the container
return sandbox.fetch("/execute-code", { method: "POST", body: codeToExecute });
}
// ... rest of Worker ...
},
};
// define your container using the Container class from cloudflare:workers
export class CodeExecutor extends Container {
defaultPort = 8080;
sleepAfter = "1m";
}
然后,使用单个命令部署您的代码:wrangler deploy。这将构建您的容器映像,将其推送到 Cloudflare 的注册表,准备好容器以便在全球范围内快速启动,并部署您的 Worker。
$ wrangler deploy
就是这样。
您的 Worker 会按需创建并启动容器。每次您env.CODE_EXECUTOR.get(id)使用唯一 ID 调用时,它都会向唯一的容器实例发送请求。容器将在第一个 上自动启动fetch,然后在可配置的超时时间(在本例中为 1 分钟)后进入休眠状态。您只需为容器实际运行的时间付费。
当您请求新容器时,我们会在传入请求附近的 Cloudflare 位置启动一个容器。这意味着无论位于哪个区域,低延迟工作负载都能得到良好的服务。Cloudflare 会负责所有预热和缓存工作,您无需操心。
这允许每个用户在自己的安全环境中运行代码。