Guides
限流
理解 Nebutra 的限流头部信息、每租户配额,以及如何优雅地处理 429 响应。
概述
Nebutra 执行两种类型的限制:
- 限流——每秒/每分钟的请求数,按租户和端点强制执行
- 配额——月度使用量上限(API 调用、AI Token),按计费套餐强制执行
限流响应头
每个 API 响应包含以下头部信息:
| 头部 | 描述 |
|---|---|
x-ratelimit-limit | 当前窗口允许的请求数 |
x-ratelimit-remaining | 当前窗口剩余的请求数 |
x-ratelimit-reset | 窗口重置的 Unix 时间戳 |
retry-after | 重试前等待的秒数(仅在 429 时) |
各套餐默认限制
| 套餐 | API 调用/月 | AI Token/月 | 请求/分钟 |
|---|---|---|---|
| FREE | 1,000 | 100,000 | 60 |
| PRO | 100,000 | 5,000,000 | 600 |
| 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?
在 GitHub 上编辑此页面
最后更新于