Nutzungsbeschränkungen

Die Google Play EMM API hat für jedes EMM ein Standardlimit von 60.000 Abfragen pro Minute.

Wenn Sie das Kontingent überschreiten, gibt die Google Play EMM API HTTP 429 Too Many Requests zurück. Damit du die angegebenen Nutzungslimits nicht überschreitest und deinen Nutzern eine optimale Nutzung ermöglichst, kannst du einige der im folgenden Abschnitt beschriebenen Best Practices umsetzen.

Empfehlungen zur Einhaltung der API-Nutzungslimits

Wenn du die Google Play EMM API verwendest, kannst du einige Best Practices implementieren, um Anfragen zu verteilen und das Risiko zu verringern, die Nutzungslimits zu überschreiten.

Startzeiten und Intervalle zufällig anordnen

Aktivitäten wie die Synchronisierung oder das Einchecken auf Geräten gleichzeitig führen wahrscheinlich zu einem deutlichen Anstieg des Anfragevolumens. Anstatt diese Aktivitäten in regelmäßigen Abständen auszuführen, können Sie Ihre Anfragelast zufällig verteilen. Anstatt beispielsweise jedes Gerät alle 24 Stunden zu synchronisieren, können Sie jedes Gerät innerhalb eines zufälligen Zeitraums zwischen 23 und 25 Stunden synchronisieren. Dadurch wird die Anzahl der Anfragen verteilt.

Wenn Sie einen täglichen Job ausführen, der viele API-Aufrufe in kurzer Abfolge ausführt, sollten Sie den Job auf einmal starten, um eine große Anzahl von Anfragen für alle Unternehmenskunden gleichzeitig zu verhindern.

Exponentiellen Backoff zum Wiederholen von Anfragen verwenden

Wenn Sie Jobs ausführen, die aus vielen API-Aufrufen bestehen, sollten Sie eine exponentielle Backoff-Strategie als Reaktion auf das Erreichen des Kontingents verwenden. Der exponentielle Backoff ist ein Algorithmus, der Anfragen exponentiell wiederholt. Hier ein Beispiel für die Implementierung eines einfachen exponentiellen Backoffs:

  1. Stellen Sie eine Anfrage an die Google Play EMM API.
  2. Sie erhalten eine HTTP 429-Antwort.
  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 erhalten eine HTTP 429-Antwort.
  7. Warten Sie 8 Sekunden + random_time und wiederholen Sie die Anfrage.

random_time ist in der Regel eine Zufallszahl von -0,5 * Wartezeit bis +0,5 * Wartezeit. Definieren Sie jedes Mal einen neuen random_time, wenn Sie Ihre Anfrage noch einmal senden. API-Aufrufe, die für Nutzeraktionen erforderlich sind, können nach einem häufigeren Zeitplan wiederholt werden (z. B. 0,5 s, 1 s und 2 s).

Ratenbegrenzung für Batchprozesse

Jedes Mal, wenn ein Batchprozess das Kontingent erreicht, erhöht sich die Latenz von Nutzeraktionen, die die API aufrufen. In solchen Fällen sind Strategien wie der exponentielle Backoff 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 an den Nutzer gerichtete Aktionen zunimmt, sollten Sie eine Ratenbegrenzung für aufeinanderfolgende Prozesse verwenden. Weitere Informationen finden Sie unter RateLimiter von Google. Mit einer Ratenbegrenzung können Sie die Rate Ihrer API-Anfragen so anpassen, dass Sie regelmäßig unter den Nutzungslimits bleiben.

Sie können beispielsweise einen Stapelprozess mit einem Standardratenlimit von 50 Abfragen pro Sekunde starten. Wenn die API keinen Fehler zurückgibt, erhöhen Sie die Ratenbegrenzung langsam (1% pro Minute). Jedes Mal, wenn Sie das Kontingent erreichen, müssen Sie die Anfragerate um 20 % reduzieren. Dieser adaptive Ansatz führt zu einer besseren Anfragerate und reduziert gleichzeitig die Latenz für Nutzeraktionen.