使用 Azure 文本翻译 API 时如何处理限制?

Posted

技术标签:

【中文标题】使用 Azure 文本翻译 API 时如何处理限制?【英文标题】:How to handle throttling when using the Azure Translator Text API? 【发布时间】:2019-03-01 16:49:05 【问题描述】:

当我向 Azure 文本翻译 API 发送过多请求时,有时我会收到来自 API 的 429 响应,但没有指示如何正确限制请求计数。我找到了一些关于限制的文档,但它似乎不适用于这个特定的 API:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits

有没有人知道是否有类似的方法来获取剩余请求计数或在发出另一个请求之前等待的时间?还是我必须实现自己的逻辑来处理限制?

【问题讨论】:

你应该在你的代码中实现退避 我做到了,但这并没有真正的帮助。我猜对某个时间窗口的翻译请求数量有一个未记录的硬限制。如果您达到此限制,则后续调用将始终失败,直到该窗口结束。我刚刚发现您可以发送多个文本,每个请求最多 5000 个字符,并且会沿着这条路线走。缺少文档还是有点遗憾。 您使用什么语言进行查询?如果是 .net,您仍然可以查看 Polly github.com/App-vNext/Polly 来管理这些案例 感谢您的链接。我正在构建 php 示例,并且正在使用一个可以很好地处理退避逻辑的小脚本。 【参考方案1】:

Azure Translator Text API 是位特定的,因为宣布的限制不是请求数而是字符数。

如文档here 中所述,限制取决于密钥的类型:

层级/字符限制

F0:每小时 200 万个字符 S1:每小时 4000 万个字符 S2:每小时 4000 万个字符 S3:每小时 1.2 亿个字符 S4:每小时 2 亿个字符

我猜还有一个(技术性更强的)请求限制,文档中没有明确说明

【讨论】:

documentation 声明 api 错误代码由 6 位数字组成。第一个数字等于 HTTP 响应代码。因此,超出配额会导致 403 响应代码而不是 429。 有 2 个错误:一个是 400 和 6 位错误代码,一个是 429。429 必须链接到我的最后一行,我将尝试从产品中获得答案组 顺便说一句,我在文档中发现了一个有趣的句子:“对文本翻译 API 的未完成请求的数量没有限制。”,这里:docs.microsoft.com/en-us/azure/cognitive-services/translator/… 我将我的问题发送到邮件列表 我想说的是我的问题不是超出 qouta 因为我得到 429 响应代码而不是 403。我发现之前研究文档的那句话,我不确定它是什么意思,因为当我使用 API 时,我肯定会超出某种请求限制。也许每小时翻译的字符数是有限制的,因为即使每次请求发送更多数据也会产生相似的吞吐量。

以上是关于使用 Azure 文本翻译 API 时如何处理限制?的主要内容,如果未能解决你的问题,请参考以下文章

调用 REST API 时如何处理 Google Ads API 速率限制?

使用带有textarea文本的jQuery追加时如何处理回车

快速导航页面时如何处理HTTP api请求 |颤振 |镖

从 API 接收时如何处理 blob 存储 url

当我推送到 GitHub 时如何处理秘密 API 密钥,以便在克隆存储库时我的项目仍然有效?

使用 DataGridView 控件和 Access 数据库查询时如何处理错误?