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ń dla 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ę |
|
3000 |
Liczba odczytanych wiadomości na minutę |
|
3000 |
Liczba zapisów dotyczących członkostwa na minutę |
|
300 |
Liczba odczytów w ramach subskrypcji na minutę |
|
3000 |
Zapisy w pokoju na minutę |
|
60 |
Odczyty przestrzeni na minutę |
|
3000 |
Zapisy załączników na minutę |
|
600 |
Odczyty załączników na minutę |
|
3000 |
Liczba zapisów reakcji na minutę |
|
600 |
Liczba odczytów reakcji na minutę |
|
3000 |
Limity dotyczące poszczególnych przestrzeni
Limity dotyczące poszczególnych pokoi ograniczają częstotliwość 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ę |
|
900 |
Zapisy na minutę |
|
60 |
Liczba zapisów reakcji na minutę |
|
300 |
Liczba zapisów wiadomości na minutę podczas importowania danych do Google Chat |
|
600 |
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ę |
|
900 |
Zapisy na minutę |
|
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ń w ciągu 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 są odrzucane, ważne jest, aby opóźnienia między żądaniami z czasem się zwiększały, aż żądanie zostanie zaakceptowane.
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:
- Wysyłanie żądania do interfejsu Google Chat API.
- Jeśli prośba się nie powiedzie, poczekaj 1 +
random_number_milliseconds
i spróbuj ponownie. - Jeśli żądanie się nie powiedzie, poczekaj 2 +
random_number_milliseconds
i spróbuj ponownie. - Jeśli prośba się nie powiedzie, poczekaj 4 +
random_number_milliseconds
i spróbuj ponownie. - I tak dalej, aż do
maximum_backoff
. - 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 przez pewne zdarzenie 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ą 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ą jego wartość, 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:
- Informacje o dostosowywaniu limitów
- Wyświetlanie bieżącego wykorzystania limitu i limitów
- Wysyłanie prośby o wyższy limit