Pull-Warteschlangen in Python 2 verwenden

Diese Seite bietet eine Übersicht über Pull-Warteschlangen in der App Engine-Standardumgebung.

Bei Push-Warteschlangen werden Aufgaben je nach Konfiguration der Warteschlange an einen Worker-Dienst übergeben. Bei Pull-Warteschlangen muss der Worker-Dienst Aufgaben von der Warteschlange anfordern. Die Warteschlange antwortet, indem sie dem Worker für einen festgelegten Zeitraum exklusiven Zugriff zur Verarbeitung der Aufgabe gewährt. Dieser Vorgang wird als Freigabe bezeichnet.

Die Anwendung überträgt die Aufgabe an den Aufgabenwarteschlangendienst und der Worker fordert daraufhin die Freigabe der Aufgabe aus dem Aufgabenwarteschlangendienst an.

Bei Pull-Warteschlangen können Sie verwandte Aufgaben mithilfe von Tags gruppieren und einen Worker so konfigurieren, dass er mehrere Aufgaben mit einem bestimmten Tag auf einmal abruft. Dieser Vorgang wird als Stapelverarbeitung bezeichnet.

Wenn ein Worker eine Aufgabe nicht verarbeiten kann, bevor deren Freigabe abläuft, kann er entweder die Freigabe erneuern oder sie auslaufen lassen, sodass sie von einem anderen Worker angefordert werden kann. Sobald die Aufgabe abgeschlossen ist, wird sie vom Worker gelöscht.

Bei Pull-Warteschlangen müssen einige Funktionen, die in Push-Warteschlangen automatisiert sind, durch Code ausgeführt werden:

Worker skalieren
Die Anzahl der Worker muss auf Basis der Verarbeitungsmenge vom Code skaliert werden. Ist der Code dazu nicht in der Lage, riskieren Sie entweder Vergeudung von Rechenressourcen, wenn keine Aufgaben verfügbar sind, oder Latenz, wenn zu viele Aufgaben verarbeitet werden müssen.
Aufgaben löschen
Aufgaben müssen nach der Verarbeitung explizit vom Code gelöscht werden. Bei Push-Warteschlangen werden die Aufgaben von App Engine für Sie gelöscht. Wird die Aufgabe aus der Pull-Warteschlange nach der Verarbeitung nicht vom Worker gelöscht, wird die Aufgabe von einem anderen Worker noch einmal verarbeitet. Dadurch werden Rechenressourcen vergeudet und das Fehlerrisiko wird erhöht, wenn Aufgaben nicht idempotent sind.

Zum Erstellen von Pull-Warteschlangen in der App Engine-Standardumgebung müssen Sie in einer Konfigurationsdatei mit dem Namen queue.yaml ein Attribut festlegen.

Workflow bei Pull-Warteschlangen

Worker, die Tasks aus Pull-Warteschlangen verarbeiten, müssen in einem Dienst definiert sein, der in der App Engine-Standardumgebung ausgeführt wird.

Der Workflow sieht folgendermaßen aus:

  1. Sie erstellen eine Pull-Warteschlange mit der queue.yaml-Datei.
  2. Sie erstellen Aufgaben und fügen sie der Warteschlange hinzu.
  3. Der von Ihnen erstellte Worker fordert die Freigabe der Aufgabe an. Dazu verwendet er TaskQueue.
  4. App Engine sendet dem Worker in der Freigabeantwort die Aufgabendaten.
  5. Der Worker verarbeitet die Aufgabe. Kann die Aufgabe nicht vor Ablauf der Freigabe ausgeführt werden, kann der Worker die Freigabe verlängern. Ist die Freigabe abgelaufen, kann die Freigabe der Aufgabe zur Verarbeitung durch einen anderen Worker angefordert werden.
  6. Wurde die Aufgabe erfolgreich ausgeführt, wird sie vom Worker gelöscht.

Weitere Informationen