调用频率控制(Rate Limits)
理解调用频率控制
调用频率控制是指用户 API 在指定时间内访问本平台服务频次的规则。其旨在:
- 防止 API 滥用和误用:通过设定访问频率上限,限制异常或非预期的请求行为
- 确保公平的资源分配:避免少数用户占用过多系统资源,保障所有用户在同等条件下访问服务的权利
- 保持 API 性能和可靠性:稳定系统响应时间,降低因过载导致的请求失败率,提升整体接口的服务质量
- 保护服务的稳定性:通过频率限制减缓突发访问压力,防止瞬时高并发对系统造成冲击
调用频率控制指标
对于图像及视频模型主要采用两种调用频率的衡量指标:
- 图像模型采用 IPM(Image Per Minute,即每分钟可生成的图像数量)
- 视频模型采用 RPM(Requests Per Minute,即每分钟的 API 请求次数)
调用频率控制规则
针对不同的模型,本平台根据其计算资源消耗程度,对其调用频率实行差异化的限制策略。
IPM
IPM 限制每分钟可生成的图像数量,具体各模型对应的默认 IPM 值见下方表格。
| 服务名称 | 模型 API | 用户默认值 |
|---|---|---|
| 文生图 | txt2img_v3 | 10 |
| 图生图 | img2img_v3 | 10 |
| 背景移除 | remove_background | 10 |
| 背景替换 | replace_background | 10 |
| 文字擦除 | remove_text | 10 |
| 局部重绘 | inpainting | 10 |
| 对象擦除 | cleanup | 10 |
| 人脸融合 | merge_face | 10 |
RPM
RPM 限制每分钟的 API 请求次数,具体各模型对应的默认 RPM 值见下方表格。
| 服务名称 | 模型 API | 用户默认值 |
|---|---|---|
| 文生视频 | txt2video | 1 |
| 图生视频 | img2video | 1 |
避免触发调用频率控制
如果您的 API 请求数量超过了调用频率控制,API 将返回:
- HTTP 状态码:429 Too Many Requests(请求过多)
- 响应体:调用频率超出的信息
为避免触发调用频率控制,您可以采取以下措施:
- 在您的应用中实现请求限制:根据平台提供的调用频率限制,自行控制客户端的请求速率,避免在短时间内发送过多请求
- 在重试时使用指数退避机制:当遇到请求被限制(如 429 错误)时,不要立即重试,而是逐步延长重试间隔时间,以减少对服务的冲击
- 监控您的 API 使用情况:持续跟踪并记录您的调用次数、频率和异常响应,及时调整使用策略
若您已经触发了429错误,您可以尝试以下操作:
- 稍后再试:等待一段时间后再重试您的请求
- 优化请求:根据平台提供的调用频率限制减少请求频率
- 提高调用频率控制:如果需要更高的调用频率控制,可以通过下方企业微信联系我们

最佳实践
1. 请求队列管理
python
import time
import requests
from queue import Queue
from threading import Thread
class RateLimitedAPI:
def __init__(self, api_key, max_requests_per_minute):
self.api_key = api_key
self.max_requests = max_requests_per_minute
self.request_times = []
def wait_if_needed(self):
now = time.time()
# 移除一分钟前的请求记录
self.request_times = [t for t in self.request_times if now - t < 60]
if len(self.request_times) >= self.max_requests:
# 计算需要等待的时间
oldest_request = min(self.request_times)
wait_time = 60 - (now - oldest_request)
if wait_time > 0:
time.sleep(wait_time)
self.request_times.append(now)
def make_request(self, url, data):
self.wait_if_needed()
# 发送实际请求
response = requests.post(url, json=data, headers={
'Authorization': f'Bearer {self.api_key}'
})
return response2. 指数退避重试
python
import time
import random
def exponential_backoff_retry(func, max_retries=5):
for attempt in range(max_retries):
try:
return func()
except Exception as e:
if attempt == max_retries - 1:
raise e
# 指数退避:2^attempt + 随机抖动
delay = (2 ** attempt) + random.uniform(0, 1)
time.sleep(delay)3. 监控和告警
建议实施以下监控措施:
- 实时监控 API 调用频率
- 设置 429 错误告警
- 跟踪请求成功率
- 记录响应时间趋势
联系我们
如果您需要更高的调用频率限制或有其他相关问题,请通过企业微信联系我们,我们将为您提供定制化的解决方案。