超过随机(403)用户速率限制



我正在使用translate API翻译页面中的一些文本,这些文本是大型html格式的文本,因此我必须开发一个函数,将这些文本拆分为小于4500个字符的小块(包括html标记),以避免每次请求5000个字符的限制,我还必须修改Google PHP API,以允许通过POST发送请求。

我在谷歌开发者控制台中启用了付费版的api,并将总配额更改为每天50M个字符和每秒500个请求/user。

现在我正在用脚本翻译整个文本数据库,它工作得很好,但在某些随机点上,我会恢复错误"(403)超过用户速率限制",我必须等待几分钟才能重新运行脚本,因为当遇到错误时,api会一次又一次地返回相同的错误,直到我等待一段时间。

我不知道如果我不传递请求的数量,它为什么会不断返回错误,就像每个时间间隔都有某种最大字符一样。。。

您可能超过了之前设置的配额限制:这要么是每日计费,要么是每秒请求字符的限制。

要更改使用限制或请求增加配额,请执行以下操作:1.转到谷歌开发者控制台"https://console.developers.google.com/"。2.选择一个项目。3.在左侧边栏上,展开API&授权。4.单击API。5.点击您感兴趣的激活API的名称"即翻译API"。6.在API的信息页面顶部附近,单击配额。

  • 如果您启用了计费,只需单击"配额",它将带您进入配额页面,您可以在其中查看和更改与配额相关的设置。

  • 如果不是,单击配额将显示有关适用于翻译API的任何免费配额和限制的信息。

Google开发者控制台的速率限制为每秒10个请求,无论您更改了什么设置或限制。

你可能超过了这个限制。

我找不到任何关于这方面的文档,但我可以通过各种API请求自己进行验证。

您可以控制字符限制,但不能控制并发

您要么每秒发出500个以上的并发请求,要么使用另一个达到这种并发限制的Google API。

默认情况下不会设置referer标头,但可以将标头添加到请求中,如下所示:

$result = $t->translate('Hola Mundo', [
    'restOptions' => [
        'headers' => [
            'referer' => 'https://your-uri.com'
        ]
    ]
]);

如果在客户端级别设置referer更有意义(这样流经客户端的所有请求都会收到标头),那么这也是可能的:

$client = new TranslateClient([
    'key' => 'my-api-key',
    'restOptions' => [
        'headers' => [
            'referer' => 'https://your-uri.com'
        ]
    ]
]);

这对我有用!

参考

在我的案例中,此错误是由我的无效付款信息引起的。转到计费区域,确保一切正常。

在谷歌云设置中徘徊了几个小时后,我发现这是无效的支付信息,正如Federico Schiocchet所提到的,请确保您的账单信息是正确的。

相关内容

  • 没有找到相关文章

最新更新