Google api 为什么谷歌翻译API给了我这么多403?
我已经在下面发布了相关代码。我每天有100个请求/秒的报价,总配额为5000万个字符(后者我从未达到)。我在每个批中包含75个请求(即,在下面的示例中,每个组中有75个字符串) 我经常遇到403,通常是在发出请求不到一分钟的很短时间之后。在那之后,直到第二天,再多的退让都不起作用。这真的很让人衰弱,我很不确定为什么会这样。到目前为止,他们的反应小组没有帮助诊断这个问题 下面是一个示例错误: “校验和48af8c32261d9cb8911d99168a6f5b21上的谷歌翻译错误:https://www.googleapis.com/language/translate/v2?q=QUERYSTRING&source=ja&target=en&key=MYKEY&format=text&alt=json 返回“超出用户速率限制”>“Google api 为什么谷歌翻译API给了我这么多403?,google-api,http-status-code-403,google-translate,Google Api,Http Status Code 403,Google Translate,我已经在下面发布了相关代码。我每天有100个请求/秒的报价,总配额为5000万个字符(后者我从未达到)。我在每个批中包含75个请求(即,在下面的示例中,每个组中有75个字符串) 我经常遇到403,通常是在发出请求不到一分钟的很短时间之后。在那之后,直到第二天,再多的退让都不起作用。这真的很让人衰弱,我很不确定为什么会这样。到目前为止,他们的反应小组没有帮助诊断这个问题 下面是一个示例错误: “校验和48af8c32261d9cb8911d99168a6f5b21上的谷歌翻译错误:https://
def\u google\u translate\u回调(self、request\u id、response、err):
如果出现错误:
打印“请求id%s上的Google翻译错误:%s%”(请求id,错误)
打印“后退%d秒”。%self.backoff
睡眠(自我退避)
如果自退避<4096:
self.backoff=self.backoff*2
self.\u translate\u array\u google\u helper()
其他:
翻译=响应['translations'][0]['translatedText']\
.替换(“,”))\
.替换(“';”,“”)
self.translations.append((请求\u id,翻译))
如果已完成():
self.is_=False
其他:
自电流_组+=1
self.\u translate\u array\u google\u helper()
def_translate_array_google_helper(self):
如果self.current\u group>=len(self.groups):
self.is_=False
返回
service=self.google\u translator.translations()
组=自身组[自身当前组]
batch=self.google\u translator.new\u batch\u http\u请求(
callback=self.\u谷歌\u翻译\u回调
)
对于文本,请求组中的\u id:
格式='文本'
如果是html(文本):
格式='html'
batch.add(
服务列表(q=文本,格式=格式),
目标=self.to_lang,源=self.from_lang),
请求\u id=请求\u id
)
batch.execute()
听起来您达到了每用户每秒100个请求的限制/userI同意,但为什么回退不起作用?
def _google_translate_callback(self, request_id, response, err):
if err:
print 'Google Translate Error on request_id %s: %s' % (request_id, err)
print 'Backing off for %d seconds.' % self.backoff
sleep(self.backoff)
if self.backoff < 4096:
self.backoff = self.backoff * 2
self._translate_array_google_helper()
else:
translation = response['translations'][0]['translatedText'] \
.replace('"', '"') \
.replace(''', "'")
self.translations.append((request_id, translation))
if is_done():
self.is_translating = False
else:
self.current_group += 1
self._translate_array_google_helper()
def _translate_array_google_helper(self):
if self.current_group >= len(self.groups):
self.is_translating = False
return
service = self.google_translator.translations()
group = self.groups[self.current_group]
batch = self.google_translator.new_batch_http_request(
callback=self._google_translate_callback
)
for text, request_id in group:
format_ = 'text'
if is_html(text):
format_ = 'html'
batch.add(
service.list(q=text, format=format_,
target=self.to_lang, source=self.from_lang),
request_id=request_id
)
batch.execute()