C# 翻译API用户速率无理由超过[403]限制
我通过“google.API.translate.v2”版本1.9.2.410使用带C#代码的google translate API和付费服务 代码类似于:C# 翻译API用户速率无理由超过[403]限制,c#,google-translate,C#,Google Translate,我通过“google.API.translate.v2”版本1.9.2.410使用带C#代码的google translate API和付费服务 代码类似于: var GoogleService = new Google.Apis.Translate.v2.TranslateService( new BaseClientService.Initializer { ApiKey = Context.ConfigData.GoogleApiKey, ApplicationName
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]错误[消息[用户速率限制]
超出]位置[-]原因[超出UserRateLimit]
域[usageLimits]]
在那之前,从来没有。我的限额是:
总配额
50000个字符/天
剩余49344849个字符/天 占总数的98,69% 每用户限制
100个请求/秒/用户 请求数肯定少于每秒100个请求
有什么问题吗?翻译API有一个现有的未记录配额。此配额将每个用户每100秒的字符数限制为10000(也称为10000个字符/100秒/用户) 这意味着,即使您将大文本拆分为不同的请求,也无法在100秒内绕过10000个字符 简要示例:
- 如果在前5秒内跳过10k个字符,则需要等待95秒才能继续分析字符
- 如果您在50秒后达到此配额,则需要再等待50秒
- 如果在第99秒点击,则需要等待1秒才能继续工作
或者,您可以捕获异常,无论何时出现403错误,都可以应用100秒的延迟,然后重试。这不是最省时的解决方案,因为100秒间隔是连续的(在达到配额时不会启动),但它可以确保您不会在同一请求中两次达到限制。此解决方案不起作用。因此,它起作用,但只是部分起作用。错误计数稍微少一些,但仍然有很多。整个解决方案,即使工作是无用的,因为翻译太长了。我编辑了我的评论,以更好地澄清行为。你想翻译什么?如果您正在分析大型段落,是否适合将其拆分为较小的请求?