Guides

限流

理解 Nebutra 的限流头部信息、每租户配额,以及如何优雅地处理 429 响应。

概述

Nebutra 执行两种类型的限制:

  1. 限流——每秒/每分钟的请求数,按租户和端点强制执行
  2. 配额——月度使用量上限(API 调用、AI Token),按计费套餐强制执行

限流响应头

每个 API 响应包含以下头部信息:

头部描述
x-ratelimit-limit当前窗口允许的请求数
x-ratelimit-remaining当前窗口剩余的请求数
x-ratelimit-reset窗口重置的 Unix 时间戳
retry-after重试前等待的秒数(仅在 429 时)

各套餐默认限制

套餐API 调用/月AI Token/月请求/分钟
FREE1,000100,00060
PRO100,0005,000,000600
ENTERPRISE无限制无限制自定义

处理 429 响应

指数退避重试

async function fetchWithRetry(url: string, options?: RequestInit, maxRetries = 3) {
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
    const res = await fetch(url, options);

    if (res.status !== 429) return res;
    if (attempt === maxRetries) throw new Error("超过最大重试次数");

    const retryAfter = parseInt(res.headers.get("retry-after") ?? "1", 10);
    const backoff = retryAfter * 1000 * Math.pow(2, attempt);

    await new Promise((resolve) => setTimeout(resolve, backoff));
  }
}

SDK 自动重试

const nebutra = createClient({
  apiKey: process.env.NEBUTRA_API_KEY!,
  retry: {
    maxAttempts: 3,
    backoff: "exponential",
  },
});

查询配额使用情况

const quota = await nebutra.metering.getQuota("api_calls");
// → { limit: 1000, used: 847, remaining: 153, percentage: 0.847 }

if (quota.percentage > 0.9) {
  // 警告用户 / 提示升级
}

提升限额

  • FREE → PRO:从计费设置页面升级
  • PRO → ENTERPRISE联系我们获取自定义限额

相关文档

How is this guide?

目录