Skip to content

调用频率控制(Rate Limits)

理解调用频率控制

调用频率控制是指用户 API 在指定时间内访问本平台服务频次的规则。其旨在:

  • 防止 API 滥用和误用:通过设定访问频率上限,限制异常或非预期的请求行为
  • 确保公平的资源分配:避免少数用户占用过多系统资源,保障所有用户在同等条件下访问服务的权利
  • 保持 API 性能和可靠性:稳定系统响应时间,降低因过载导致的请求失败率,提升整体接口的服务质量
  • 保护服务的稳定性:通过频率限制减缓突发访问压力,防止瞬时高并发对系统造成冲击

调用频率控制指标

对于图像及视频模型主要采用两种调用频率的衡量指标:

  • 图像模型采用 IPM(Image Per Minute,即每分钟可生成的图像数量)
  • 视频模型采用 RPM(Requests Per Minute,即每分钟的 API 请求次数)

调用频率控制规则

针对不同的模型,本平台根据其计算资源消耗程度,对其调用频率实行差异化的限制策略。

IPM

IPM 限制每分钟可生成的图像数量,具体各模型对应的默认 IPM 值见下方表格。

服务名称模型 API用户默认值
文生图txt2img_v310
图生图img2img_v310
背景移除remove_background10
背景替换replace_background10
文字擦除remove_text10
局部重绘inpainting10
对象擦除cleanup10
人脸融合merge_face10

RPM

RPM 限制每分钟的 API 请求次数,具体各模型对应的默认 RPM 值见下方表格。

服务名称模型 API用户默认值
文生视频txt2video1
图生视频img2video1

避免触发调用频率控制

如果您的 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 response

2. 指数退避重试

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 错误告警
  • 跟踪请求成功率
  • 记录响应时间趋势

联系我们

如果您需要更高的调用频率限制或有其他相关问题,请通过企业微信联系我们,我们将为您提供定制化的解决方案。

基于 MIT 许可发布 厦门界云聚算网络科技有限公司