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

时间:2015-02-22 18:52:12

标签: google-api google-translate

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

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

现在我用脚本翻译整个文本数据库,它运行正常但在一些随机点我恢复错误“(403)超出用户速率限制”,我必须等待几分钟才能重新运行脚本,因为当达到错误时,api反复返回相同的错误,直到我等待一段时间。

我不知道为什么如果我没有传递请求的数量,它会一直返回错误,就像它每个时间间隔或某些东西都有某种最大的字符...

4 个答案:

答案 0 :(得分:8)

您可能超出之前设置的配额限制:这是每日可计费或每秒请求字符数限制。

要更改使用限制或请求增加配额,请执行以下操作: 1.转到Google Developers Console“https://console.developers.google.com/”。 2.选择一个项目。 3.在左侧边栏上,展开API& AUTH。 4.单击API。 5.单击您感兴趣的激活API的名称“即Translate API”。 6.在API信息页面的顶部附近,单击“配额”。

  • 如果您已启用结算,只需点击“配额”,即可转到配额页面,您可以在其中查看和更改与配额相关的设置。

  • 如果没有,单击“配额”会显示有关适用于Translate API的任何免费配额和限制的信息。

答案 1 :(得分:1)

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

您要么超过500个并发请求/秒,要么您正在使用另一个达到此类并发限制的Google API。

答案 2 :(得分:1)

Google Developer Console的速率限制为每秒10个请求,无论您可能更改了哪些设置或限制。

您可能超出此限制。

我无法找到有关此问题的任何文档,但可以通过各种API请求自行验证。

答案 3 :(得分:1)

Referer header is not set by default, but it is possible to add the headers to a request like so:

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

If it makes more sense for you to set the referer at the client level (so all requests flowing through the client receive the header), this is possible as well:

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

This worked for me!

[Reference] https://github.com/googleapis/google-cloud-php/issues/483