Interfejs Google Play EMM API ma domyślny limit 60 tys. zapytań na minutę dla każdego dostawcy usług EMM.
Jeśli przekroczysz limit, interfejs EMM API Google Play zwróci wartość HTTP 429 Too Many Requests
.
Aby mieć pewność, że nie przekroczysz podanych limitów wykorzystania, i zapewnisz użytkownikom optymalne wrażenia, rozważ wdrożenie niektórych ze sprawdzonych metod opisanych w sekcji poniżej.
Zalecenia dotyczące nieprzekraczania limitów użycia interfejsu API
Podczas korzystania z interfejsu Play EMM API możesz stosować sprawdzone metody, które pomogą Ci rozłożyć żądania w czasie i zmniejszy ryzyko przekroczenia limitów użycia.
losowo ustalać czasy rozpoczęcia i przerwy.
Działania takie jak synchronizacja lub zameldowanie na urządzeniach w tym samym czasie mogą spowodować znaczny wzrost liczby żądań. Zamiast wykonywać te czynności w regularnych odstępach czasu, możesz rozłożyć obciążenie żądań w czasie, losując te odstępy. Na przykład zamiast synchronizowania każdego urządzenia co 24 godziny możesz synchronizować je w losowym przedziale czasowym od 23 do 25 godzin. Pomoże to rozłożyć liczbę żądań w czasie.
Podobnie, jeśli codziennie wykonujesz zadanie, które w krótkim czasie wysyła wiele wywołań interfejsu API, rozważ uruchomienie go o losowej porze każdego dnia, aby uniknąć jednoczesnego wysyłania dużej liczby żądań do wszystkich klientów korporacyjnych.
Używanie wzrastającego czasu do ponownej próby
Jeśli uruchamiasz zadania, które składają się z wielu wywołań interfejsu API, użyj wykładniczej strategii ponowienia w odpowiedzi na osiągnięcie limitu. Wzrastający czas do ponownej próby to algorytm, który próbuje ponownie wykonać żądania w zwiększających się odstępach czasu. Przykładowy przepływ implementacji prostego wzrastającego czasu do ponowienia:
- Wyślij żądanie do interfejsu EMM API w Google Play.
- Odbierz odpowiedź
HTTP 429
. - Zaczekaj 2 sekundy +
random_time
, a potem powtórz żądanie. - Otrzymaj odpowiedź
HTTP 429
. - Zaczekaj 4 sekundy +
random_time
, a potem powtórz próbę. - Otrzymaj odpowiedź
HTTP 429
. - Zaczekaj 8 sekund +
random_time
, a potem powtórz żądanie.
Wartość random_time
to zwykle liczba losowa z zakresu -0,5 * czas oczekiwania do +0,5 * czas oczekiwania. Za każdym razem, gdy ponownie próbujesz wysłać żądanie, definiuj nowe random_time
. Wywołania interfejsu API, które są wymagane do wykonania działań dotyczących użytkownika, można powtarzać częściej (np.co 0,5 s, 1 s lub 2 s).
Procesy wsadowe z ograniczeniem liczby żądań
Za każdym razem, gdy proces zbiorczy osiąga limit, czas oczekiwania na działanie użytkownika wywołujące interfejs API wzrasta. W takich sytuacjach strategie takie jak wygaszanie wykładnicze mogą nie być wystarczająco skuteczne w utrzymywaniu niskiej latencji działań użytkownika.
Aby uniknąć wielokrotnego przekraczania limitów wykorzystania interfejsu API i zwiększania czasu oczekiwania w przypadku działań wykonywanych przez użytkownika, rozważ zastosowanie ograniczenia liczby żądań w procesach wsadowych (patrz Limit współczynnika szybkości Google). Dzięki ogranicznikowi częstotliwości możesz dostosowywać częstotliwość żądań interfejsu API, aby stale pozostawać poniżej limitów użycia.
Możesz na przykład uruchomić proces zbiorczy z domyślnym limitem szybkości wynoszącym 50 QPS. Dopóki interfejs API nie zwróci błędu, stopniowo zwiększaj limit szybkości (o 1% co minutę). Za każdym razem, gdy osiągniesz limit, zmniejsz częstotliwość żądań o 20%. To elastyczne podejście prowadzi do bardziej optymalnej częstotliwości żądań, jednocześnie skracając czas oczekiwania na działania, które mają wykonać użytkownicy.