跳到主要内容

限流、超时与流式中断

处理 429 限流、5xx 上游错误、请求超时和流式输出中断:指数退避重试示例、超时设置建议和视频任务的轮询间隔。

429:请求过于频繁​

触发限速 / 限流时返回 429。处理方式:

  1. 降低并发数和请求频率;
  2. 使用指数退避重试:每次失败后等待时间翻倍,并加入随机抖动,设置最大重试次数;
  3. 批量任务分散到更长的时间段内执行。

下面是一个通用的指数退避示例(Python,使用 OpenAI SDK):

python
import os
import random
import time

from openai import OpenAI, RateLimitError, APIStatusError

client = OpenAI(api_key=os.environ["FLUXLANE_API_KEY"], base_url="https://run.fluxlane.ai/v1")

def chat_with_retry(messages, model="模型名称", max_retries=5):
delay = 1.0
for attempt in range(max_retries + 1):
try:
return client.chat.completions.create(model=model, messages=messages)
except (RateLimitError, APIStatusError) as e:
status = getattr(e, "status_code", 429)
retryable = status == 429 or 500 <= status < 600
if not retryable or attempt == max_retries:
raise
time.sleep(delay + random.uniform(0, delay / 2))
delay = min(delay * 2, 30)

只对 429 和 5xx 重试;400、401、403、666 等请求本身的问题重试也不会成功,应先修正请求。

5xx:上游异常​

状态原因处理
500 / 502上游异常稍后重试,可使用上面的退避逻辑
503无可用渠道或上游服务不可用稍后重试;持续出现时确认模型可用性或联系支持

持续出现时,记录请求 ID(X-Oneapi-Request-Id)并联系支持与反馈。

超时​

生成较慢或网络中断都会导致超时:

  • 开启流式输出,内容会边生成边返回,避免长时间没有数据;
  • 适当提高客户端的读取超时,生成长文本时尤其需要;
  • 合理设置输出长度上限,避免不必要的长输出。

流式输出中断​

  • Chat Completions 正常结束时会收到 data: [DONE],Anthropic Messages 会收到 message_stop;
  • 没有收到结束标记就断开,应视为请求未完成,可以重新发起请求;
  • 需要用量统计时带上 "stream_options": {"include_usage": true},用量在最后一个分片中。

视频任务轮询​

视频生成是异步任务,不要用一个长连接等待结果:

接口建议轮询间隔
Seedance GET /v1/video/generations/{task_id}每 3~5 秒
Kling、Hailuo、Vidu GET /v1/videos/{id}每 5~10 秒