0

Meine Warteschlangentask verwendet urlfetch, um Daten von einer externen API abzurufen, und speichert sie in ndb Datastore-Entitäten.App Engine TaskQueue-Task, die Auswirkungen auf die Leistung von Benutzern mit Handlern hat

Dies dauert insgesamt etwa 15 Sekunden.

Irgendwie, wenn der Task ausgeführt wird, werden alle anderen Handler (einfache Json Response Handler) langsamer. (langsamer bedeutet + 500ms)

Was könnte das verursachen?

Ist nicht die Idee von Hintergrundaufgaben, die nicht die Anforderungen des Benutzers betrifft.

Ich stolperte über this blogpost, aber meine Aufgabe dauert länger als 1 Sekunde. Ich sehe nicht, wie mir das helfen wird.

Antwort

3

Standardmäßig werden Ihre Aufgaben von denselben Instanzen ausgeführt, die auch Benutzeranforderungen bedienen. Hintergrund oder nicht, sie teilen die gleiche CPU, Speicher und Bandbreite. Es ist eine gute Idee, diese Aufgaben auf einem anderen Modul auszuführen, was eine andere Instanz bedeutet. Sie können dies tun, indem Sie ein Ziel für Ihre Aufgabenwarteschlange angeben.

Beachten Sie, dass ein automatischer App Engine-Scheduler normalerweise eine neue Instanz dreht, wenn die Antworten Ihrer aktuellen Instanzen langsamer werden. Eine Verlangsamung in Ihrem Fall wird jedoch nicht durch das wachsende Volumen von Standardanfragen verursacht, sondern durch eine ungewöhnliche Anfrage, die viel länger dauert. Dies verhindert, dass der automatische Scheduler auf die erhöhten Latenzen reagiert. Sie können zur manuellen oder einfachen Planung wechseln, wodurch Sie mehr Kontrolle über die Kapazität (Gesamtzahl der Instanzen) und die Regeln für das Erstellen neuer Instanzen erhalten. Die Erstellung eines anderen Moduls für Hintergrundaufgaben ist jedoch eine bessere Lösung.

+0

Vielen Dank! Das funktioniert perfekt. –