Limity przydziału

Aby zapewnić sprawiedliwe korzystanie z interfejsów API Profilu Firmy w Google (GBP) i chronić stabilność systemu, obowiązują limity żądań do interfejsu API. Jeśli Twoje żądanie przekroczy limit przydziału, interfejs API odpowie kodem stanu HTTP 429 Too Many Requests (lub RESOURCE_EXHAUSTED w przypadku gRPC).

Domyślne limity przydziału

W tabeli poniżej znajdziesz standardowe limity przydziału interfejsów API Profilu Firmy w Google. Limity są definiowane w 2 wymiarach:

  • Zapytania na minutę (QPM): chroni stabilność backendu, ograniczając krótkotrwały ruch.
  • Zapytania dziennie (QPD): zarządza ogólnym dziennym wykorzystaniem platformy.
Interfejs API Limity
Business Information API
  • Domyślne żądania: 300 QPM
  • Żądania utworzenia lokalizacji: 300 QPD
  • Żądania SearchGoogleLocation: 300 QPD
  • Żądania aktualizacji lokalizacji: 10 000 QPD
  • Edycje: 10 na minutę na profil firmy w Google (nie można zwiększyć)
Interfejs API zarządzania kontem 300 QPM
Performance API 300 QPM
Verifications API 300 QPM
Lodging API 300 QPM
Interfejs API działań lokalnych 300 QPM
Notifications API 300 QPM

Sprawdzone metody unikania błędów związanych z limitami

Równomierne rozłożenie żądań w ciągu dnia zapobiega większości błędów związanych z limitami. Postępuj zgodnie z tymi sprawdzonymi metodami, aby zapewnić niezawodną synchronizację danych w aplikacji.

Równomierne rozłożenie żądań

Zamiast wysyłać dużą partię żądań w tym samym czasie, rozłóż je na dłuższy okres. Na przykład limit 300 QPM oznacza średnio 5 żądań na sekundę. Wprowadzenie krótkiego opóźnienia między żądaniami zapobiega nagłym wzrostom ruchu.

Traffic distribution patterns:

Spiky traffic (Discouraged): High burst of requests followed by an idle period
Requests |   |||                 |||
         |   |||                 |||
         +---------------------------------
           Time ──>

Even traffic (Recommended): Consistent rate of requests over time
Requests |  |  |  |  |  |  |  |  |  |
         |  |  |  |  |  |  |  |  |  |
         +---------------------------------
           Time ──>
import time

# Pace requests to stay within the 300 QPM limit (5 requests/sec)
for request in batch_requests:
    send_request(request)
    time.sleep(0.2)  # 200ms delay ensures a smooth distribution

Wdrażanie wzrastającego czasu do ponowienia z losowym opóźnieniem

Gdy otrzymasz błąd 429 Too Many Requests, użyj wzrastającego czasu do ponowienia z losowym opóźnieniem , aby automatycznie ponowić żądanie. Ta standardowa praktyka polega na odczekaniu krótkiego, losowego okresu przed ponowieniem próby i stopniowym zwiększaniu opóźnienia w przypadku kolejnych ponowień.

import random
import time
from googleapiclient.errors import HttpError

def call_api_with_retry(api_method, max_retries=5):
    base_delay = 1.0
    for attempt in range(max_retries):
        try:
            return api_method.execute()
        except HttpError as e:
            if e.resp.status == 429:
                if attempt == max_retries - 1:
                    raise e
                # Retry with exponential backoff and jitter
                sleep_time = random.uniform(0, base_delay * (2 ** attempt))
                time.sleep(sleep_time)
            else:
                raise e

Optymalizacja dostępu do danych

  • Buforowanie danych statycznych: przechowuj dane, które rzadko się zmieniają, lokalnie, zamiast wielokrotnie wysyłać zapytania do interfejsu API.
  • Używanie powiadomień Pub/Sub: subskrybuj powiadomienia Pub/Sub, aby na bieżąco aktualizować bazy danych bez sondowania interfejsu API.
  • Sekwencyjne przetwarzanie punktów końcowych z dużą liczbą odczytów: unikaj wykonywania wielu równoczesnych żądań do punktów końcowych z dużą liczbą odczytów, takich jak SearchListings. Zamiast tego przetwarzaj zadania sekwencyjnie za pomocą tokenów stronicowania.

Poproś o zwiększenie limitu

Zanim poprosisz o zwiększenie limitu, sprawdź wzorce wykorzystania w konsoli Google Cloud, aby upewnić się, że liczba żądań nie jest niepotrzebnie zgrupowana.

Zespół Profilu Firmy w Google monitoruje średnie wykorzystanie limitu, aby upewnić się, że efektywnie wykorzystujesz bieżące limity. Prośby o zwiększenie limitu są zwykle odrzucane, jeśli:

  • aplikacja nie osiąga obecnego limitu QPM;
  • średnie wykorzystanie jest mniejsze niż 50% obecnego limitu QPM;
  • aplikacja wykazuje bardzo nieregularny wzorzec żądań zamiast równomiernego rozkładu.

Prześlij prośbę

Jeśli wdrożysz te sprawdzone metody i nadal potrzebujesz większego limitu, prześlij prośbę o zwiększenie limitu.

  1. W menu wybierz Prośba o zwiększenie limitu.
  2. Podaj nazwę firmy, adres e-mail kontaktu i numer projektu.

Gdy prześlesz formularz, zespół Profilu Firmy w Google sprawdzi Twoją prośbę i określi czy zwiększenie limitu jest odpowiednie. Jeśli prośba zostanie zatwierdzona, limit zostanie zwiększony. Jeśli prośba zostanie odrzucona, otrzymasz powód odrzucenia.