Nutzungslimits

Die Google Play EMM API hat ein Standardlimit von 60.000 Abfragen pro Minute pro EMM.

Wenn Sie das Kontingent überschreiten, gibt die Google Play EMM API HTTP 429 Too Many Requests zurück. Damit Sie die angegebenen Nutzungslimits nicht überschreiten und Ihre Nutzer optimal nutzen können, sollten Sie einige der im folgenden Abschnitt beschriebenen Best Practices implementieren.

Empfehlungen, wie Sie die Limits für die API-Nutzung einhalten

Wenn du die Google Play EMM API verwendest, kannst du einige Best Practices anwenden, um Anfragen zu verteilen und das Risiko einer Überschreitung der Nutzungslimits zu verringern.

Startzeiten und Intervalle zufällig festlegen

Aktivitäten wie die gleichzeitige Synchronisierung oder das gleichzeitige Einchecken von Geräten führen wahrscheinlich zu einem deutlichen Anstieg des Anfragevolumens. Anstatt diese Aktivitäten in regelmäßigen Abständen durchzuführen, können Sie die Anfragelast durch zufällige Anordnung der Intervalle verteilen. Anstatt jedes Gerät alle 24 Stunden zu synchronisieren, können Sie jedes Gerät beispielsweise in einem zufällig ausgewählten Zeitraum zwischen 23 und 25 Stunden synchronisieren. So wird die Anzahl der Anfragen verteilt.

Wenn Sie einen täglichen Job ausführen, bei dem viele API-Aufrufe in schneller Folge ausgeführt werden, sollten Sie den Job jeden Tag zu einer zufälligen Zeit starten, um zu verhindern, dass gleichzeitig viele Anfragen für alle Ihre Unternehmenskunden gesendet werden.

Exponentiellen Backoff für Wiederholungsversuche von Anfragen verwenden

Wenn Sie Jobs ausführen, die viele API-Aufrufe umfassen, verwenden Sie eine exponentielle Backoff-Strategie, wenn das Kontingent erreicht wird. Der exponentielle Backoff ist ein Algorithmus, der Anfragen exponentiell wiederholt. Ein Beispiel für die Implementierung eines einfachen exponentiellen Backoffs:

  1. Stellen Sie eine Anfrage an die Google Play EMM API.
  2. Sie sollten eine HTTP 429-Antwort erhalten.
  3. Warten Sie 2 Sekunden + random_time und wiederholen Sie die Anfrage.
  4. Sie erhalten eine HTTP 429-Antwort.
  5. Warten Sie 4 Sekunden + random_time und wiederholen Sie die Anfrage.
  6. Sie sollten eine HTTP 429-Antwort erhalten.
  7. Warten Sie 8 Sekunden + random_time und wiederholen Sie die Anfrage.

random_time ist in der Regel eine Zufallszahl zwischen −0,5 * Wartezeit und +0,5 * Wartezeit. Definieren Sie jedes Mal, wenn Sie die Anfrage wiederholen, eine neue random_time. API-Aufrufe, die für die Ausführung von Aktionen für Nutzer erforderlich sind, können häufiger wiederholt werden (z. B. alle 0,5 Sekunden, 1 Sekunde und 2 Sekunden).

Batchprozesse mit Ratenbegrenzung

Jedes Mal, wenn ein Batch-Prozess das Kontingent erreicht, erhöht sich die Latenz von Nutzeraktionen, die die API aufrufen. In solchen Situationen sind Strategien wie die exponentielle Backoff-Methode möglicherweise nicht effektiv genug, um eine niedrige Latenz für Nutzeraktionen aufrechtzuerhalten.

Um zu vermeiden, dass die Nutzungslimits der API wiederholt erreicht werden und die Latenz für nutzerorientierte Aktionen zunimmt, sollten Sie für Ihre Batch-Prozesse einen Ratelimiter verwenden (siehe RateLimiter von Google). Mit einer Ratenbegrenzung können Sie die Rate Ihrer API-Anfragen so anpassen, dass Sie kontinuierlich unter den Nutzungslimits bleiben.

Starten Sie beispielsweise einen Batch-Prozess mit einer Standard-Geschwindigkeitsbeschränkung von 50 QPS. Solange die API keinen Fehler zurückgibt, erhöhen Sie das Ratenlimit langsam (1% pro Minute). Reduzieren Sie Ihre Anfragerate jedes Mal um 20 %, wenn Sie das Kontingent erreichen. Dieser adaptive Ansatz führt zu einer optimaleren Anfragerate und reduziert gleichzeitig die Latenz für nutzerorientierte Aktionen.