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ę |
|
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ą 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ę |
|
900 |
Zapisy na minutę |
|
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ę |
|
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ń 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:
- Wyślij żądanie 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 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:
- Informacje o dostosowywaniu limitów
- Wyświetlanie bieżącego wykorzystania limitu i limitów
- Wysyłanie prośby o wyższy limit