Push-Warteschlangen erstellen

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

Warteschlangen mit Warteschlangen-Konfigurationsdatei erstellen

Für die Bearbeitung einer Aufgabe 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 grundsätzlich 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 10 Warteschlangen für kostenlose Anwendungen und bis zu 100 Warteschlangen für abrechnungsfähige Anwendungen 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 zu queue-blue hinzugefügten Aufgaben werden an das Zielmodul v2.task-module gesendet. Die Aktualisierungsrate von queue-red wird von 5/s auf 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 bestimmen, mit der die Aufgaben in den einzelnen Warteschlangen verarbeitet werden. Dazu definieren Sie weitere Elemente 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 die 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 keine Tokens mehr im Bucket der Warteschlange vorhanden sind. Der Bucket wird in App Engine kontinuierlich mit neuen Tokens auf der Grundlage der rate aufgefüllt, die Sie für die Warteschlange festgelegt haben.

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. Auf oberster Ebene fügen Sie 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. Sie können diese Beschränkung verwenden, um die Anwendung vor einem Forkbomb-Programmierfehler zu schützen, durch den während der Ausführung einer Aufgabe mehrere andere Aufgaben hinzufü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.

Warteschlangen in der Google Cloud Platform Console überwachen

Die Seite "Aufgabenwarteschlangen" in der GCP Console enthält Informationen zu allen Aufgabenwarteschlangen in Ihrer Anwendung.

  1. Gehen Sie in der GCP Console zur Seite "Aufgabenwarteschlangen" und wählen Sie oben in der Menüleiste den Tab "Push-Warteschlangen" aus.

    Weiter zum Tab Push-Warteschlangen

  2. Im Tab Push-Warteschlangen werden alle Warteschlangen der Anwendung aufgelistet. Wenn Sie auf den Namen einer Warteschlange klicken, wird die Seite Details zur Aufgabenwarteschlange angezeigt. Hier können Sie alle Aufgaben in der ausgewählten Warteschlange sehen.

Weitere Informationen