You need to enable JavaScript to run this app. Python调用Boto3 start_text_translation_job触发TooManyRequestsException报错
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Boto3 start_text_translation_job触发TooManyRequestsException报错

报错原因定位

触发botocore.errorfactory.TooManyRequestsException的核心是Amazon Translate服务针对StartTextTranslationJob接口的两类访问限制,和你的代码业务逻辑、参数配置无关,完全匹配你提到的“前10个任务提交成功、第11个触发报错”的场景:

  • 接口请求速率限制:对该接口的调用存在单单位时间的请求次数阈值,默认阈值通常为每5秒最多10次连续调用
  • 活跃任务数配额限制:单账号单区域下,只要状态为排队中、运行中的批量翻译任务,就会占用并发配额,新账号的初始并发活跃任务配额通常为10个,一旦占用数达到上限,新的任务提交请求就会被拦截返回限流错误。
可落地的解决方法
  • 启用Boto3内置的自动退避重试机制
    无需手动编写零散的重试判断逻辑,创建Translate客户端时直接配置适配限流场景的重试策略,遇到限流报错会自动按指数间隔等待后重试。示例配置代码:
    import boto3
    from botocore.config import Config
    
    translate_client = boto3.client(
        "translate",
        region_name="你的服务部署区域",
        config=Config(
            retries={
                "max_attempts": 6,
                "mode": "standard"
            }
        )
    )
    
    说明:标准重试模式会自动识别429类限流错误,按1s、2s、4s的梯度退避等待,避免连续触发限流阈值。
  • 主动控制任务提交节奏
    不要在循环中无间隔连续提交48个目标语言对应的所有翻译任务,每完成一次任务提交后增加固定等待间隔,把瞬时请求数压到限流阈值以下。示例实现逻辑:
    import time
    
    target_languages = ["de", "fr", "ja"] # 替换为你的48个目标语言列表
    
    for lang in target_languages:
        # 原有start_text_translation_job的调用逻辑
        translate_client.start_text_translation_job(...)
        time.sleep(2) # 单任务提交完成后等待2秒,再发起下一次提交
    
  • 基于活跃任务数动态调整提交量
    针对活跃任务数的配额限制,不要一次性提交全部任务。可以在每轮提交前,调用list_text_translation_jobs接口统计当前状态为SUBMITTED、IN_PROGRESS的活跃任务数,若距离配额上限还有空余名额,再提交新任务;若已接近配额上限,则轮询等待前面的任务执行完成、状态更新为终态(COMPLETED/FAILED/STOPPED)后,再补提后续任务。
  • 按需申请配额提升
    如果上述调整后仍无法满足批量提交需求,可以根据实际业务量,申请提升对应账号区域下Amazon Translate的两类配额:StartTextTranslationJob接口的请求速率阈值、单区域并发活跃批量翻译任务数上限。

内容的提问来源于stack exchange,提问作者NealWalters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.11 01:06:03