Skip to content

feat: 移植 PR #343 限速能力 — SlidingWindowRateLimiter + 429 智能重试 #2

Description

@Leooone

问题

MiniMax Token Plan API 在 summary 阶段频繁触发 HTTP 429,即使 PAGEINDEX_MAX_CONCURRENCY=1 仍会触发限流。原重试机制 max_retries=10, sleep=1s 冷却时间不足。

方案

VectifyAI/PageIndex PR #343 移植三个核心能力:

  1. SlidingWindowRateLimiter — 滑动窗口限速器,通过 PAGEINDEX_RPM_LIMIT 控制每分钟请求上限
  2. _extract_retry_delay() — 智能重试延迟:429 时解析 Retry-After 响应头,无头时指数退避+抖动
  3. _is_rate_limit_error() — 自动检测 HTTP 429 错误类型

改动

  • pageindex/index/utils.py — 新增 SlidingWindowRateLimiter 类 + 3 个 429 工具函数;llm_completion/llm_acompletion 用动态延迟替换硬编码 sleep
  • pageindex/config.py — 新增 rpm_limit 字段、PAGEINDEX_RPM_LIMIT env var、rpm_limit_scope()
  • pageindex/index/pipeline.pybuild_index() 接入 rpm_limit_scope()

用法

PAGEINDEX_RPM_LIMIT=20   # 每分钟最多 20 次调用

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions