Limity wykorzystania

Interfejs Google Chat API jest usługą współdzieloną, dlatego stosujemy limity i ograniczenia, aby zapewnić wszystkim użytkownikom sprawiedliwe korzystanie z niego i chronić ogólną wydajność Google Workspace.

Jeśli przekroczysz limit, otrzymasz odpowiedź z kodem stanu HTTP 429: Too many requests. Dodatkowe sprawdzanie limitu żądań na backendzie usługi Chat może też generować tę samą odpowiedź o błędzie. Jeśli wystąpi ten błąd, użyj algorytmu wzrastającego czasu do ponowienia i spróbuj ponownie później. Jeśli nie przekroczysz limitów na minutę podanych w tabelach poniżej, możesz wysyłać dowolną liczbę żądań dziennie.

Do metod interfejsu Chat API mogą mieć zastosowanie różne rodzaje limitów: limity na projekt, na pokój i na użytkownika.

Limity projektu

Limity dotyczące poszczególnych projektów ograniczają liczbę zapytań w projekcie Google Cloud, a tym samym dotyczą pojedynczej aplikacji w Google Chat, która wywołuje określone metody interfejsu Chat API dla każdego limitu.

W tabeli poniżej znajdziesz limity zapytań dotyczące poszczególnych projektów. Te limity znajdziesz też na stronie Limity.

Limit na projekt

Metody interfejsu Chat API

Limit (na 60 sekund)

Zapisywanie wiadomości na minutę

spaces.messages.create

spaces.messages.patch

spaces.messages.delete

3000

Liczba odczytanych wiadomości na minutę

spaces.messages.get

spaces.messages.list

3000

Liczba zapisów dotyczących członkostwa na minutę

spaces.members.create

spaces.members.delete

300

Liczba odczytów w ramach subskrypcji na minutę

spaces.members.get

spaces.members.list

3000

Zapisy w pokoju na minutę

spaces.setup

spaces.create

spaces.patch

spaces.delete

60

Odczyty przestrzeni na minutę

spaces.get

spaces.list

spaces.findDirectMessage

3000

Zapisy załączników na minutę

media.upload

600

Odczyty załączników na minutę

spaces.messages.attachments.get

media.download

3000

Liczba zapisów reakcji na minutę

spaces.messages.reactions.create

spaces.messages.reactions.delete

600

Liczba odczytów reakcji na minutę

spaces.messages.reactions.list

3000

Limity dotyczące poszczególnych przestrzeni

Limity dotyczące poszczególnych pokoi ograniczają liczbę zapytań w danym pokoju i są współdzielone przez wszystkie aplikacje do obsługi czatu działające w tym pokoju, które wywołują wymienione metody interfejsu Chat API dla każdego limitu.

Tabela poniżej zawiera szczegółowe informacje o limitach zapytań w przestrzeni:

Limit na przestrzeń

Metody interfejsu Chat API

Limit (na 60 sekund)

Odczyty na minutę

media.download

spaces.get

spaces.members.get

spaces.members.list

spaces.messages.get

spaces.messages.list

spaces.messages.attachments.get

spaces.messages.reactions.list

900

Zapisy na minutę

media.upload

spaces.delete

spaces.patch

spaces.messages.create (W przypadku przychodzących webhooków obowiązują dodatkowe limity).

spaces.messages.delete

spaces.messages.patch

spaces.messages.reactions.create

spaces.messages.reactions.delete

60

Limity na użytkownika

Limity na użytkownika ograniczają liczbę zapytań użytkownika Google Chat. Zapytania dotyczą wszystkich aplikacji do obsługi czatu, które wywołują metodę interfejsu Chat API w imieniu użytkownika (przy użyciu uwierzytelniania użytkownika).

W tabeli poniżej znajdziesz limity zapytań dla poszczególnych użytkowników:

Limit na użytkownika

Metody interfejsu Chat API

Limit (na 60 sekund)

Odczyty na minutę

customEmojis.get

customEmojis.list

900

Zapisy na minutę

customEmojis.create

customEmojis.delete

60

Dodatkowe limity wykorzystania

Istnieją dodatkowe limity dotyczące tworzenia pokoi typu GROUP_CHAT lub SPACE (przy użyciu metody spaces.create lub spaces.setup). Twórz mniej niż 35 pokoi na minutę i 800 pokoi na godzinę. Pokoje typu DIRECT_MESSAGE nie podlegają tym dodatkowym limitom.

Duży ruch w interfejsie API kierowany na tę samą przestrzeń może spowodować przekroczenie dodatkowych limitów wewnętrznych, które nie są widoczne na stronie Limity.

Rozwiązywanie błędów związanych z limitami czasowymi

W przypadku wszystkich błędów związanych z czasem (maksymalnie N żądań na X minut) zalecamy, aby kod przechwytywał wyjątek i używał skróconego wycofywania wykładniczego, aby urządzenia nie generowały nadmiernego obciążenia.

Wycofywanie wykładnicze to standardowa strategia obsługi błędów w aplikacjach sieciowych. Algorytm wykładniczego wycofywania ponawia żądania, używając wykładniczo rosnących czasów oczekiwania między żądaniami, aż do maksymalnego czasu wycofywania. Jeśli żądania nadal nie są realizowane, ważne jest, aby opóźnienia między nimi z czasem się zwiększały, aż żądanie zostanie zrealizowane.

Przykładowy algorytm

Algorytm wykładniczego wycofywania ponawia żądania wykładniczo, zwiększając czas oczekiwania między ponownymi próbami aż do maksymalnego czasu wycofywania. Na przykład:

  1. Wyślij żądanie do interfejsu Google Chat API.
  2. Jeśli prośba się nie powiedzie, poczekaj 1 + random_number_milliseconds i spróbuj ponownie.
  3. Jeśli żądanie się nie powiedzie, poczekaj 2 + random_number_milliseconds i spróbuj ponownie.
  4. Jeśli prośba się nie powiedzie, poczekaj 4 + random_number_milliseconds i spróbuj ponownie.
  5. I tak dalej, aż do maximum_backoff.
  6. Kontynuuj oczekiwanie i ponawianie prób do osiągnięcia maksymalnej liczby prób, ale nie wydłużaj czasu oczekiwania między próbami.

gdzie:

  • Czas oczekiwania wynosi min(((2^n)+random_number_milliseconds), maximum_backoff), a wartość n jest zwiększana o 1 w przypadku każdej iteracji (żądania).
  • random_number_milliseconds to losowa liczba milisekund mniejsza lub równa 1000. Pomaga to uniknąć sytuacji, w których wielu klientów jest synchronizowanych w określonych okolicznościach i wszyscy ponawiają próbę w tym samym czasie, wysyłając żądania w zsynchronizowanych falach. Wartość random_number_milliseconds jest ponownie obliczana po każdej próbie ponowienia.
  • maximum_backoff wynosi zwykle 32 lub 64 sekundy. Odpowiednia wartość zależy od przypadku użycia.

Klient może ponawiać próby po osiągnięciu limitu maximum_backoff. Ponowne próby po tym momencie nie muszą już wydłużać czasu oczekiwania. Jeśli na przykład klient używa czasu maximum_backoff 64 sekund, po osiągnięciu tej wartości może ponawiać próbę co 64 sekundy. W pewnym momencie należy uniemożliwić klientom ponawianie prób w nieskończoność.

Czas oczekiwania między ponownymi próbami i liczba ponownych prób zależą od przypadku użycia i warunków sieciowych.

Wysyłanie prośby o zwiększenie limitu dla projektu

W zależności od wykorzystania zasobów w projekcie możesz poprosić o dostosowanie limitu. Wywołania interfejsu API przez konto usługi są traktowane jako korzystanie z jednego konta. Wysłanie wniosku o zwiększenie limitu nie gwarantuje jego zatwierdzenia. Zatwierdzenie próśb o dostosowanie limitu, które znacznie zwiększają wartość limitu, może potrwać dłużej.

Nie wszystkie projekty mają takie same limity. W miarę upływu czasu i zwiększania wykorzystania Google Cloud wartości limitów mogą wymagać zwiększenia. Jeśli spodziewasz się znacznego wzrostu wykorzystania, możesz z wyprzedzeniem poprosić o zmianę limitów na stronie Limity w konsoli Google Cloud.

Więcej informacji znajdziesz w tych materiałach: