カスタム制限を使うと、顧客の Worker のリソース使用量に上限をプログラムで適用できます。呼び出しごとの最大 CPU 時間とサブリクエスト数を設定できます。ユーザー Worker がいずれかの上限に達すると、そのユーザー Worker はすぐに例外をスローします。
カスタム制限は、動的な dispatch Worker で設定できます。
export default {
async fetch(request, env) {
try {
// parse the URL, read the subdomain
let workerName = new URL(request.url).host.split(".")[0];
let userWorker = env.dispatcher.get(
workerName,
{},
{
// set limits
limits: { cpuMs: 10, subRequests: 5 },
},
);
return await userWorker.fetch(request);
} catch (e) {
if (e.message.startsWith("Worker not found")) {
// we tried to get a worker that doesn't exist in our dispatch namespace
return new Response("", { status: 404 });
}
return new Response(e.message, { status: 500 });
}
},
};