Push-Warteschlangen erstellen

Auf dieser Seite wird beschrieben, wie Sie eine Push-Warteschlange erstellen und anpassen sowie deren Inhalt untersuchen können.

Warteschlangen mit Warteschlangen-Konfigurationsdatei erstellen

Um eine Aufgabe zu bearbeiten, müssen Sie sie zu einer Push-Warteschlange hinzufügen. App Engine stellt eine Standard-Push-Warteschlange mit dem Namen default zur Verfügung, die fertig konfiguriert und für die Verwendung mit Standardeinstellungen bereit ist. Sie können einfach alle Aufgaben zur Standardwarteschlange hinzufügen und müssen dann keine anderen Warteschlangen erstellen und konfigurieren.

Zum Hinzufügen eigener Warteschlangen oder zum Ändern der Standardkonfiguration müssen Sie die Warteschlangen-Konfigurationsdatei für die Anwendung bearbeiten, die Sie in App Engine hochladen. Sie können bis zu 100 Warteschlangen erstellen. Warteschlangen können nicht dynamisch angelegt werden.

Diese Warteschlangen-Konfigurationsdatei definiert zwei Warteschlangen:

queue:
- name: queue-blue
  target: v2.task-module
  rate: 5/s

- name: queue-red
  rate: 1/s

So laden Sie die Datei hoch:

gcloud app deploy queue.yaml

Alle in queue-blue aufgenommene Aufgaben werden an das Zielmodul v2.task-module gesendet. Die Aktualisierungsrate von queue-red wird von 5/s in 1/s geändert. Die Aufgaben werden dann aus der Warteschlange entfernt und mit einer Rate von 1 Aufgabe pro Sekunde an ihre jeweiligen Ziele gesendet.

Wenn Sie eine Warteschlange löschen, müssen Sie etwa sieben Tage warten, bis Sie eine neue Warteschlange mit dem gleichen Namen erstellen können.

Sie können noch viele weitere Parameter in die Konfigurationsdatei einfügen und damit das Verhalten einer Push-Warteschlange anpassen. Weitere Informationen dazu finden Sie in der Referenz zur Warteschlangen-Konfigurationsdatei.

Verarbeitungsrate der Push-Warteschlange festlegen

Sie können die Geschwindigkeit steuern, mit der die Aufgaben in den einzelnen Warteschlangen verarbeitet werden. Dazu definieren Sie weitere Anweisungen wie rate, bucket_size und max_concurrent_requests.

Die Aufgabenwarteschlange verwendet Token-Buckets, um die Rate der Aufgabenausführung zu steuern. Jede benannte Warteschlange hat einen Token-Bucket, der Tokens enthält. Die maximale Anzahl der Tokens entspricht der festgelegten bucket_size oder höchstens fünf Tokens, wenn keine Bucket-Größe festgelegt ist.

Jedes Mal, wenn Ihre Anwendung eine Aufgabe ausführt, wird ein Token aus dem Bucket entfernt. Die Anwendung fährt mit der Verarbeitung von Aufgaben in der Warteschlange fort, bis im Bucket der Warteschlange keine Tokens mehr vorhanden sind. App Engine füllt den Bucket laufend anhand des Werts für rate, den Sie für die Warteschlange angegeben haben, mit neuen Tokens auf.

Wenn Ihre Warteschlange zu verarbeitende Aufgaben und der Bucket der Warteschlange Tokens enthält, verarbeitet App Engine gleichzeitig dieselbe Anzahl von Aufgaben und Tokens. Dies kann zu Verarbeitungsspitzen, einer hohen Nutzung von Systemressourcen und zu Konflikten mit Anfragen anderer Nutzer führen.

Verwenden Sie max_concurrent_requests, wenn Sie die gleichzeitige Ausführung vieler Aufgaben verhindern oder Konflikte zwischen Datenspeichern vermeiden möchten.

Das folgende Beispiel zeigt, wie Sie mit max_concurrent_requests Aufgaben begrenzen und die Bucket-Größe und die Rate im Einklang mit den Anforderungen und verfügbaren Ressourcen Ihrer Anwendung anpassen:

queue:
- name: queue-blue
  rate: 20/s
  bucket_size: 40
  max_concurrent_requests: 10

Speicherlimits für alle Warteschlangen festlegen

Mithilfe der Warteschlangen-Konfigurationsdatei können Sie die Gesamtmenge des Speichers festlegen, der von Aufgabendaten in allen Warteschlangen belegt werden kann. Fügen Sie auf oberster Ebene das Element total_storage_limit ein, um das Limit für den Gesamtspeicher festzulegen:

# Set the total storage limit for all queues to 120MB
total_storage_limit: 120M
queue:
- name: queue-blue
  rate: 35/s

Der Wert besteht aus einer Zahl gefolgt von einer Einheit: B für Byte, K für Kilobyte, M für Megabyte, G für Gigabyte und T für Terabyte. Zum Beispiel gibt 100K ein Limit von 100 Kilobyte an. Wenn durch das Hinzufügen einer Aufgabe zu einer Warteschlange die Speichergrenze überschritten wird, schlägt der Aufruf für das Hinzufügen der Aufgabe fehl. Das Standardlimit beträgt 500M (500 Megabyte) für kostenlose Anwendungen. Bei kostenpflichtigen Anwendungen gibt es keine Begrenzung, es sei denn, Sie legen explizit eine fest. Mit dieser Beschränkung können Sie die Anwendung vor einem Forkbomb-Programmierfehler schützen, durch den während der Ausführung einer Aufgabe mehrere andere Aufgaben hinzugefügt werden.

Wenn Ihre Anwendung beim Hinzufügen von Aufgaben Fehler wegen unzureichender Kontingente erhält, kann die Erhöhung des Gesamtspeicherlimits hilfreich sein. Wenn Sie diese Funktion verwenden, empfehlen wir dringend, die Speicherbegrenzung so festzulegen, dass ausreichend Speicher für die Ausführung von Aufgaben mehrerer Tage verfügbar ist. Auf diese Weise können die Warteschlangen vorübergehend gesichert werden und weiterhin neue Aufgaben aufnehmen, während sie den Rückstand abarbeiten und gleichzeitig vor einem Forkbomb-Programmierfehler geschützt sind.

Monitoring von Warteschlangen in der Console

  1. Rufen Sie in der Console die Seite Cloud Tasks auf.

    Rufen Sie die Seite Cloud Tasks auf.

    Auf der App Engine-Seite Aufgabenwarteschlange finden Sie eine Anleitung zur Seite "Cloud Tasks". Diese Aktualisierung in der Console ändert nichts an der Funktionsweise der Aufgabenwarteschlangen.

  2. Aktivieren Sie die Cloud Task API.

  3. Auf der Seite mit der Cloud Tasks-Seite wird eine Liste aller Warteschlangen in der Anwendung angezeigt. Wenn Sie auf den Namen einer Warteschlange klicken, wird die Seite Warteschlangendetails angezeigt, auf der alle Aufgaben in der ausgewählten Warteschlange angezeigt werden.

Nächste Schritte

Weitere Informationen zu Aufgaben erstellen