我在下面发布了相关代码。我有100个请求/秒的报价和每天50M字符的总配额(后者我从未打过)。我在每批中包含75个请求(即在下面,每组中有75个字符串)。
我经常跑到403s,通常是在不到一分钟的时间内解雇请求。在那之后,直到第二天才能进行退避。这真的让人虚弱,我不确定为什么会这样。到目前为止,他们的响应团队对诊断问题没有帮助。
以下是一个示例错误:
“校验和上的谷歌翻译错误48af8c32261d9cb8911d99168a6f5b21:https://www.googleapis.com/language/translate/v2?q = QUERYSTRING& source = _a& amp; target = en& key = MYYEY& format = text& salt = salt = json返回“超出用户速率限制”>“
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()