我正在使用翻译API翻译我页面中的一些文本,这些文本是大型html格式文本,所以我必须开发一个函数,将这些文本拆分成小于4500个字符的小块(包括html标签),以避免每个请求限制5000个字符,我还必须修改Google PHP API以允许通过POST发送请求。
我在Goole开发者控制台中启用了api的付费版本,并将总配额更改为每天50M字符和500请求/秒/ urser。
现在我用脚本翻译整个文本数据库,它运行正常但在一些随机点我恢复错误“(403)超出用户速率限制”,我必须等待几分钟才能重新运行脚本,因为当达到错误时,api反复返回相同的错误,直到我等待一段时间。
我不知道为什么如果我没有传递请求的数量,它会一直返回错误,就像它每个时间间隔或某些东西都有某种最大的字符...
答案 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