跳转到内容
本站为社区维护的非官方中文翻译,与 Cloudflare, Inc. 无关联。本站不提供账户登录,请勿在任何非官方站点输入您的 Cloudflare 账户信息。官方文档:developers.cloudflare.com

扩展和路由

最后更新 查看 MarkdownAgent 设置

使用显式 ID 扩展容器实例

当前,通过获取具有唯一 ID 的容器,然后启动容器来手动扩展 Containers。请注意,获取容器并不会自动启动它。

// get and start two container instances
const containerOne = getContainer(
	env.MY_CONTAINER,
	idOne,
).startAndWaitForPorts();

const containerTwo = getContainer(
	env.MY_CONTAINER,
	idTwo,
).startAndWaitForPorts();

每个实例将运行到其 sleepAfter 时间结束,或者直到它被手动停止。

当您想要显式控制容器实例的生命周期时,此行为非常有用。例如,您可能希望为特定用户启动容器后端实例,或者您可能短暂运行代码沙盒以隔离 AI 生成的代码,或者您可能希望运行短期的批处理作业。

使用 getRandom 辅助函数

如果您想要运行容器的多个实例并在它们之间路由请求,请使用 getRandom 辅助函数:

import { Container, getRandom } from "@cloudflare/containers";

const INSTANCE_COUNT = 3;

class Backend extends Container {
	defaultPort = 8080;
	sleepAfter = "2h";
}

export default {
	async fetch(request: Request, env: Env): Promise<Response> {
		const containerInstance = await getRandom(env.BACKEND, INSTANCE_COUNT);
		return containerInstance.fetch(request);
	},
};

使用 getRandom 路由到多个无状态容器实例。它为每个请求随机选择 N 个实例之一,这意味着:

  • 它要求用户设置固定的要路由到的实例数。
  • 它将随机选择每个实例,而不管其位置如何。

这篇文档对您有帮助吗?