跳转到内容

限流与配额

为保证各账户之间公平使用平台产能,开放 API 对提交任务设有并发和速率限制,对请求本身设有大小限制。

限制 默认值 计算范围 超出时
同时进行的任务数 5 账户内状态为 queued、dispatching、running 的任务 提交返回 1024
每分钟提交次数 120 账户内最近 60 秒提交的任务(滚动窗口) 提交返回 1025
API Key 数量 10 账户内未删除的 Key(含停用、过期的) 控制台无法创建新 Key
请求体大小 64 KiB 单个请求 返回 1001
query 长度 4096 个字符 单个任务 返回 1001
wait_seconds 0–120 秒 单个请求 返回 1001
任务列表 page_size 最大 100 单个请求 返回 1001
  • 你账户当前生效的并发、每分钟请求数和 Key 数量上限,以控制台「用量统计 → 额度与限制」显示为准。需要更高的额度请联系商务。
  • 限制按账户计算:同一账户下所有 API Key、MCP 调用和控制台的在线调试共享这些额度。
  • 只有提交任务计入并发和速率。 查询平台列表、查询任务、任务列表不占用这两项额度,但请保持合理的轮询频率(建议每个任务 15 秒查一次)。
  • 被限流拒绝的提交不会创建任务,也不扣点数,等待后重试是安全的。

并发只统计 queued、dispatching、running 三种状态,不包括 pending(已派发、在平台队列中排队)。也就是说:

  • 提交后,任务一旦被派发进入 pending,就不再占用并发额度。
  • 大量 P2 任务在平台繁忙时长时间 pending,不会把你的并发额度占满。
  • 真正占用额度的是「刚提交还没派发」和「正在执行」的任务。

批量提交时,与其等服务端拒绝,不如在客户端主动控制:

  • 节流:两次提交之间留出间隔,让每分钟提交数低于上限(例如每 0.6 秒最多提交一个)。
  • 遇到 1024 / 1025 时退避:暂停一段时间(如 15 秒起,逐次加倍)后再提交同一个任务。
  • 提交和轮询分开:用一个队列负责提交,另一个定时循环批量查询未结束的任务。
# 依次提交一批问题:主动节流,遇到限流时退避重试
import time
SUBMIT_INTERVAL = 0.6 # 秒,约每分钟 100 次
def submit_batch(platform, queries):
task_ids = []
for query in queries:
delay = 15
while True:
try:
task = post("/task/submit", {"platform": platform, "query": query})
task_ids.append(task["task_id"])
break
except MaxAEOError as e:
if e.ret not in (1024, 1025):
raise
time.sleep(delay) # 没有创建任务,等待后重试同一个问题
delay = min(delay * 2, 120)
time.sleep(SUBMIT_INTERVAL)
return task_ids

示例中的 post、MaxAEOError、sleep 见错误处理。生产环境里,提交遇到超时或 -1 时还要按该页的方法先确认任务是否已创建。