Zarządzaj limitami

Interfejs Google Calendar API podlega limitom, co ma mieć pewność, że wszyscy użytkownicy mogą z niego korzystać w równym stopniu. Korzystając z interfejsu Calendar API, musisz pamiętać o 3 ważnych ograniczeniach:

  • Limity wykorzystania interfejsu API są wymuszane na poziomie projektu i użytkownika. Więcej informacji znajdziesz w następnej sekcji.
  • Ogólne limity korzystania z Kalendarza: unikaj limitów korzystania z Kalendarza.
  • Ograniczenia operacyjne: cena może zostać ograniczona w dowolnym momencie. Przykładem może być próba zapisu w krótkich odstępach czasu w jednym kalendarzu.

Typy limitów wykorzystania interfejsu Calendar API

Egzekwowane są 2 rodzaje limitów:

  • Na minutę na projekt:jest to liczba żądań wysłanych przez Twój projekt Google Cloud.
  • Na minutę na projekt na użytkownika: jest to liczba żądań wysłanych przez konkretnego użytkownika w projekcie Cloud. Ten limit ma Ci pomóc w sprawiedliwym dzieleniu się treściami między użytkownikami.

Limity są obliczane na minutę z użyciem przesuwanego okna, więc nagłe natężenie ruchu, które w ciągu jednej minuty przekroczy limit na minutę, spowoduje ograniczenie liczby w kolejnym okresie, aby średnio zmieścić się w limitach.

Jeśli któryś z tych limitów zostanie przekroczony, częstotliwość żądań zostanie ograniczona, a na zapytania pojawią się kod stanu 403 usageLimits lub kod stanu 429 usageLimits. W takim przypadku możesz wykonać te czynności:

  1. Przestrzegaj wszystkich sprawdzonych metod: korzystaj z wykładniczego ponowienia, zróżnicuj wzorce ruchu, korzystaj z powiadomień push.
  2. Jeśli Twój projekt się rozwija i masz więcej użytkowników, możesz poprosić o zwiększenie limitu na projekt.
  3. Jeśli zostanie osiągnięty limit na użytkownika, możesz wykonać te czynności:
    • Jeśli używasz konta usługi, przydziel obciążenie użytkownikom lub rozdziel je między kilka kont usługi.
    • Możesz poprosić o zwiększenie limitu na użytkownika, ale ogólnie nie zalecamy zwiększania go powyżej wartości domyślnej, ponieważ aplikacja może osiągać inne rodzaje limitów, na przykład ogólne limity korzystania z kalendarza lub limity operacyjne.

Prośba o zwiększenie limitu

Aby wyświetlić lub zmienić limity wykorzystania w projekcie albo poprosić o zwiększenie limitu, wykonaj te czynności:

  1. Jeśli nie masz jeszcze konta rozliczeniowego powiązanego z projektem, utwórz je.
  2. Otwórz stronę Włączone interfejsy API w bibliotece interfejsów API w konsoli API i wybierz interfejs API z listy.
  3. Aby wyświetlić i zmienić ustawienia związane z limitami, wybierz Limity. Aby wyświetlić statystyki użytkowania, wybierz Użycie.

Użyj wykładniczego ponowienia

Jeśli będziemy potrzebować spowolnienia liczby żądań, zwrócimy odpowiedź 403 „usageLimits” lub 429 (zapoznaj się z pełną dokumentacją błędów). Nie jest to błąd krytyczny. Oczekujemy, że ponowisz żądanie po krótkim czasie. Jeśli prośby nadal przyjdą zbyt szybko, zapytamy ponownie i tak dalej. Aby wszystko działało prawidłowo, opóźnienia między kolejnymi żądaniami muszą rosnąć wraz z upływem czasu.

Ogólnie rzecz biorąc, należy korzystać z skróconego wykładniczego ponowienia. Dokładne omówienie działania tego trybu i preferowanego algorytmu znajdziesz w dokumentacji Cloud Storage. Jeśli używasz biblioteki klienta Google, zwykle jest to obsługiwane. Zapoznaj się z dokumentacją biblioteki. Zazwyczaj lepiej używać implementacji biblioteki zamiast tworzyć własną.

Losuj wzorce ruchu

Klienty Kalendarza są podatne na wzrosty ruchu powodowane przez wiele klientów wykonujących jednocześnie operacje. Na przykład typową niepożądaną praktyką w przypadku klienta Kalendarza jest wykonanie pełnej synchronizacji o północy. Niemal na pewno doprowadzi to do przekroczenia limitu na minutę i doprowadzi do ograniczenia liczby żądań i ponowień.

Aby tego uniknąć, upewnij się, że ruch jest rozkładany na cały dzień, o ile to możliwe. Jeśli klient musi przeprowadzać codzienną synchronizację, poproś go o określenie losowej godziny (innej dla każdego klienta). Jeśli musisz wykonywać operację regularnie, zmień odstęp +/-25%. Pozwoli to bardziej równomiernie rozłożyć ruch w witrynie i polepszyć wrażenia użytkowników.

Korzystanie z powiadomień push

Typowym przypadkiem użycia jest wykonywanie działania, gdy w kalendarzu użytkownika coś się zmieni. Ideą tego jest to, by wielokrotnie ankietować każdy kalendarz, który Cię interesuje. Spowoduje to bardzo szybkie zużycie całego limitu – jeśli na przykład Twoja aplikacja ma 5000 użytkowników i sonduje kalendarz każdego użytkownika raz na minutę, wymaga to co najmniej 5000 minut na minutę, jeszcze zanim zostanie wykonana praca.

Aplikacje po stronie serwera mogą rejestrować powiadomienia push, co pozwala nam powiadamiać Cię, gdy wydarzy się coś interesującego. Wymagają one więcej pracy, ale pozwalają znacznie efektywniej wykorzystać limit i zwiększyć wygodę użytkowników. Pamiętaj, aby określić eventType, o którym chcesz otrzymywać powiadomienia. Więcej informacji znajdziesz w artykule o powiadomieniach push.

Prawidłowe rozliczanie kont usługi

Jeśli Twoja aplikacja wykonuje żądania, korzystając z przekazywania dostępu w całej domenie, domyślnie opłaty są naliczane za konto usługi, które zależy od limitów „na minutę na projekt na użytkownika”, a nie użytkownika, którego rolę odgrywasz. Oznacza to, że konto usługi prawdopodobnie wyczerpie limit miejsca i będzie mieć ograniczoną liczbę żądań, mimo że może działać w kalendarzach wielu użytkowników. Aby tego uniknąć, użyj parametru adresu URL quotaUser (lub nagłówka HTTP x-goog-quota-user), aby wskazać, który użytkownik będzie obciążany opłatami. Jest ona używana tylko do obliczania limitów. Więcej informacji znajdziesz w sekcji Ograniczenie liczby żądań na użytkownika w dokumentacji Cloud.

Obsługa limitów testowych

Zdecydowanie zalecamy przetestowanie tego scenariusza w rzeczywistym środowisku, aby aplikacja mogła płynnie radzić sobie z przekraczaniem limitów w praktyce (np. przez ponawianie prób ze wzrastającym czasem do ponowienia) i zminimalizować ewentualne zakłócenia dla użytkowników.

Aby taki test nie zakłócał rzeczywistego wykorzystania aplikacji, zalecamy zarejestrowanie osobnego projektu przeznaczonego tylko do testów w Konsoli interfejsów API Google i skonfigurowanie go w sposób podobny do projektu produkcyjnego. Możesz wtedy ustawić sztucznie zaniżone limity dla tego projektu i obserwować działanie aplikacji.

Ceny

Korzystanie z interfejsu API Kalendarza Google jest dostępne bez dodatkowych opłat. Przekroczenie limitu żądań w ramach limitu nie wiąże się z dodatkowymi opłatami, a konto nie jest obciążane.