You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在lambda函数中加time.sleep避免GoogleTranslator API调用崩溃

实现GoogleTranslator延迟调用避免频率限制的方案

你当前的代码有两个容易触发接口报错的问题:一是每次调用翻译接口都重新初始化翻译器实例,额外增加开销;二是没有请求间隔,批量跑的时候很容易触发1秒5次的频率上限。
按照以下方式调整即可:

  1. 首先引入需要的依赖
import time
from deep_translator import GoogleTranslator
  1. 单独定义带延迟逻辑的翻译函数,不要直接写内联lambda
# 全局只初始化一次翻译器实例,减少不必要开销
translator = GoogleTranslator(source='auto', target='en')

def translate_with_delay(text):
    # 每次发起请求前等待0.5秒,每秒最多发起2次请求,远低于频率阈值
    time.sleep(0.5)
    return translator.translate(text)
  1. 替换原来的apply调用逻辑
test["Label"] = test["cleanText"].apply(translate_with_delay)

注意事项

  • 不要把time.sleep(0.5)写在apply行的外层,那样只会在批量翻译启动前等待一次,完全起不到单请求间隔的作用
  • 0.5秒的间隔留了足够的安全冗余,如果你的数据量较大,也可以根据实际情况调整到0.3秒(每秒最多3次请求),依然不会触发频率限制
  • 如果需要处理偶发的网络波动/接口临时报错,可以给函数加上简单的重试逻辑,参考实现:
def translate_with_delay_retry(text, max_retry=3):
    for attempt in range(max_retry):
        try:
            time.sleep(0.5)
            return translator.translate(text)
        except Exception as e:
            if attempt == max_retry - 1:
                # 重试次数耗尽后抛出异常
                raise e
            # 报错后额外等待1秒再发起下一次尝试
            time.sleep(1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:21:29