如何从 429 恢复资源已耗尽(例如检查配额)

How to restore from 429 Resource has been exhausted (e.g. check quota)

我的问题很简单,我正在使用 PEOPLE API 并且我已经跳过了使用 API 的其中一个用户的配额限制,只有在尝试创建新的用户时才会显示错误此特定用户的联系方式。

错误显示代码:429,消息:资源已耗尽(例如检查配额)。

  1. 如何恢复用户再次使用API?
  2. 如果限制每分钟重置一次,怎么可能 3 天后用户仍然被阻止?

我不想增加配额,我想重新恢复配额。 除此之外,在我的开发人员面板中没有迹象表明我已经超过了 PEOPLE API 限制为每分钟 90 个的配额。

我的代码是:

const request = {
    requestBody: contact
}

service.people.createContact(request)
                        .then((res)=>{
                            console.log('Done to create a contact', res.data);
                        })
                        .catch((err)=>{
                            console.log('Error', err);
                        })

而重调按摩是:

response: {
config: {
  url: 'https://people.googleapis.com/v1/people:createContact',
  method: 'POST',
  paramsSerializer: [Function],
  data: [Object],
  headers: [Object],
  params: [Object: null prototype] {},
  validateStatus: [Function],
  body: '{"names":[{"familyName":"PASIEGA","givenName":"HOTEL","middleName":"VILLA","unstructuredName":"HOTEL VILLA PASIEGA"}],"addresses":[{"type":"home","streetAddress":"LAS BARRERAS, SN","city":"HOZNAYO","region":"S","postalCode":"39716","country":"ESPAÑA","countryCode":"ES"}],"emailAddresses":[{"value":"reservas@grupolospasiegos.com","type":"work"}],"phoneNumbers":[{"value":"785 52 12 58","type":"Villa Pasiega"},{"value":"785 52 12 58","type":"workFax"}],"biographies":[{"value":"Hotel los Pasiegos - Grupoo los Pasiegos","contentType":"TEXT_PLAIN"}],"urls":[{"value":"http://grupolospasiegos.com/contacto/","type":"profile"}],"organizations":[{"type":"Other","name":"HOTEL VILLA PASIEGA","title":"RESERVA"}],"memberships":[{"contactGroupMembership":{"contactGroupResourceName":"contactGroups/199bb8970e07b6a8"}},{"contactGroupMembership":{"contactGroupResourceName":"contactGroups/55fdbf598e048c03"}},{"contactGroupMembership":{"contactGroupResourceName":"contactGroups/5ee644148f02b901"}}]}',
  responseType: 'json'
},
data: { error: [Object] },
headers: {
  'alt-svc': 'h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"',
  'cache-control': 'private',
  connection: 'close',
  'content-encoding': 'gzip',
  'content-type': 'application/json; charset=UTF-8',
  date: 'Thu, 22 Oct 2020 12:47:16 GMT',
  server: 'ESF',
  'transfer-encoding': 'chunked',
  vary: 'Origin, X-Origin, Referer',
  'x-content-type-options': 'nosniff',
  'x-frame-options': 'SAMEORIGIN',
  'x-xss-protection': '0'
},
status: 429,
statusText: 'Too Many Requests'


},config: {
url: 'https://people.googleapis.com/v1/people:createContact',
method: 'POST',
paramsSerializer: [Function],
data: {
  names: [Array],
  addresses: [Array],
  emailAddresses: [Array],
  phoneNumbers: [Array],
  biographies: [Array],
  urls: [Array],
  organizations: [Array],
  memberships: [Array]
},
headers: {
  'Accept-Encoding': 'gzip',
  'User-Agent': 'google-api-nodejs-client/0.7.2 (gzip)',
  Authorization: 'Bearer ya29.a0AfH6SMAJtuUp3vLhSXlDVyAd80iQc1D-mYZUD7mENq12vTiegBAV834dTGYbpuuVN9wCpJ0JBB51oMwEozhb9_xoM7s9NTiwqBicNYZAjzPpjLL4MvQUp8b-Oqju8opyNwDAJWCnLvUJ5Bvz266z5H1ZXIpe3_YstXDRzw',
  'Content-Type': 'application/json',
  Accept: 'application/json'
},
params: [Object: null prototype] {},
validateStatus: [Function],
body: '{"names":[{"familyName":"PASIEGA","givenName":"HOTEL","middleName":"VILLA","unstructuredName":"HOTEL VILLA PASIEGA"}],"addresses":[{"type":"home","streetAddress":"LAS BARRERAS, SN","city":"HOZNAYO","region":"S","postalCode":"39716","country":"ESPAÑA","countryCode":"ES"}],"emailAddresses":[{"value":"reservas@grupolospasiegos.com","type":"work"}],"phoneNumbers":[{"value":"942 525 962","type":"Villa Pasiega"},{"value":"942 525 963","type":"workFax"}],"biographies":[{"value":"Hotel los Pasiegos - Grupoo los Pasiegos","contentType":"TEXT_PLAIN"}],"urls":[{"value":"http://grupolospasiegos.com/contacto/","type":"profile"}],"organizations":[{"type":"Other","name":"HOTEL VILLA PASIEGA","title":"RESERVA"}],"memberships":[{"contactGroupMembership":{"contactGroupResourceName":"contactGroups/199bb8970e07b6a8"}},{"contactGroupMembership":{"contactGroupResourceName":"contactGroups/55fdbf598e048c03"}},{"contactGroupMembership":{"contactGroupResourceName":"contactGroups/5ee644148f02b901"}}]}',
responseType: 'json'
},
code: 429,
errors: [
{
  message: 'Resource has been exhausted (e.g. check quota).',
  domain: 'global',
  reason: 'rateLimitExceeded'
}

] }

您可以在下图中看到我的开发人员 google 控制台,它显示我在 2 天内只使用了 25 个 createContact 请求,并出现 100% 错误消息,即消息 a post 这里。 image

顺便谢谢你的帮助。

我已经找到了问题的解决方案,在解释解决方案时我必须有点广泛。

每个 google 用户对其 contacts.google.com 帐户中可以存储的联系人数量有限制,限制为 25,000 个联系人,如果超过此限制,People API is 429 = Too Many Requests, 我的用户只有 9000 个联系人所以限制不是问题的原因,但它没有考虑到几周前Google 为 contacts.google.com 添加了一个用于删除联系人的按钮篮,看起来每个删除的联系人都被存储并计为 contacts.google.com 中的一个联系人。这就是发生在我身上的事情。

总结:

我的用户有 9,000 个可见联系人和 16,000 个已删除联系人,总共有 25,000 个联系人导致我每次尝试创建新联系人时都显示错误 429。

解法:

删除所有已删除的联系人,一切应该都解决了。

希望:

Google 允许 People API 访问已删除篮子中的联系人,错误 429 更好地解释了它指的是什么,因为我在这种情况下看到它不是配额问题。

重要提示:

非常感谢@ale13 的帮助,我会把它留在这里,以防将来的开发人员遇到同样的问题。