首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >翻译API用户速率限制无原因超过[403]

翻译API用户速率限制无原因超过[403]
EN

Stack Overflow用户
提问于 2015-11-24 09:19:05
回答 1查看 3.5K关注 0票数 2

我使用谷歌翻译API与C#代码通过"Google.Apis.Translate.v2“版本1.9.2.410与付费服务。

代码类似于:

代码语言:javascript
运行
复制
var GoogleService = new Google.Apis.Translate.v2.TranslateService(
 new BaseClientService.Initializer
{
    ApiKey = Context.ConfigData.GoogleApiKey,
    ApplicationName = "Translator"
});
...

  var rqr = GoogleService.Translations.List(item, 'de');
  rqr.Source = "cs";

  var result = await rqr.ExecuteAsync();

此代码例外:

用户速率限制超过403个错误[ MessageUser速率限制超过位置- ReasonuserRateLimitExceeded DomainusageLimits ]

在那之前,从来没有。我的限制是:剩余总配额5万字/天

49 344 849字符/天98 69%

100个请求/第二个/用户

请求的数量肯定少于每秒100个请求,请问出了什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-27 11:36:04

有一个现有的无文档化的翻译API配额。此配额将每个用户每100秒的字符数限制为10,000个字符(也称为10,000个字符/100秒/用户)。

这意味着,即使您将大型文本分割成不同的请求,也无法在100秒的间隔内绕过10,000个字符。

简短的例子:

  • 如果在前5秒内绕过10k字符,则需要等待95秒才能继续分析字符。
  • 如果您在50秒后达到此配额,则需要再等待50秒。
  • 如果你在第二次第99次击中它,你将需要等待1秒才能继续工作。

我建议的是总是捕获异常,并多次尝试做指数退避。这样做的想法是,如果服务器由于命中100秒间隔配额而暂时关闭,那么在返回之前,它不会被同时命中的请求所淹没(因此会连续返回403个错误)。您可以看到对此实践这里的简要解释(示例主要关注于Drive,但同样的概念适用于每个基于云的服务)。

或者,您可以捕获异常,每当您收到403错误时,请应用100秒的延迟,然后再试一次。这不是最有时间效率的解决方案,因为100秒间隔是连续的(不是在达到配额时启动),但它将确保您不会在相同的请求中达到两次。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33889673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档