Auf dieser Seite wird erläutert, wie sich die Verwendung der Cloud Tasks API zum Verwalten von Warteschlangen und das Hochladen einer queue.yaml
-Cloud Tasks-Datei zum selben Zweck unterscheiden. Außerdem werden die Schwierigkeiten beschrieben, wenn beide Methoden kombiniert werden, sowie Lösungsmöglichkeiten für häufig auftretende Probleme.
Einleitung
Die Cloud Tasks API ist eine von App Engine unabhängige Schnittstelle für den Zugriff auf den App Engine-Dienst für Aufgabenwarteschlangen. Über diese Schnittstelle
können Sie Warteschlangen verwalten,
Dazu gehören auch die Console oder der Befehl gcloud
. In der Cloud Tasks API erstellte Warteschlangen sind über das App Engine SDK zugänglich und umgekehrt. Zur Aufrechterhaltung der Kompatibilität können Sie die Konfiguration
Datei, die vom App Engine SDK verwendet wird, queue.yaml
, auch zum Erstellen und Konfigurieren
Warteschlangen, die über die Cloud Tasks API verwendet werden sollen Die Kombination der Konfiguration
über eine Datei mit Konfiguration über die Cloud Tasks API kann unerwartete Folgen haben.
Probleme bei der kombinierten Verwendung von queue.yaml
und Cloud Tasks-Methoden zur Warteschlangenverwaltung
Für den zugrunde liegenden Dienst sind queue.yaml
Dateien maßgeblich. Wenn in der hochgeladenen Datei queue.yaml
ein Teil der Warteschlangen Ihres Projekts fehlt, werden diese Warteschlangen deaktiviert oder angehalten. Falls Sie daher über die Cloud Tasks API CreateQueue
oder UpdateQueue
aufrufen und anschließend die Datei queue.yaml
ohne diese Warteschlangen hochladen, werden die in den Cloud Tasks-Aufrufen erstellten Warteschlangen deaktiviert.
Stellen Sie sich folgendes Szenario vor:
- Rufen Sie
CreateQueue
auf, um eine Warteschlange mit dem Namen "cloud-task-queue" zu erstellen. Erstellen Sie eine
queue.yaml
-Datei mit folgendem Inhalt:queue: - name: queue-yaml-queue
Für die Warteschlangen in diesem Projekt gilt nun folgender Status: Der Status der Warteschlange mit dem Namen "cloud-tasks-queue" und aller anderen bisher vorhandenen Warteschlangen ist DISABLED
. Der Status der Warteschlange mit dem Namen "queue-yaml-queue" ist RUNNING
.
Dieses Verhalten kann zu unerwarteten Ergebnissen führen, wenn Sie Warteschlangen über die Cloud Tasks API erstellen. In der Anleitung weiter unten wird gezeigt, wie Sie eine deaktivierte Warteschlange wieder aktivieren.
Ähnlich verhält es sich, wenn eine in der Cloud Tasks API deaktivierte Warteschlange später in einer hochgeladenen queue.yaml
-Datei auftaucht. Diese Warteschlange wird dann fortgesetzt.
Wenn eine Warteschlange mit der Methode DeleteQueue
gelöscht wird und später in einer queue.yaml
-Datei enthalten ist, kann das Hochladen der queue.yaml
-Datei fehlschlagen, da Warteschlangennamen nach dem Löschen mehrere Tage nicht wiederverwendet werden dürfen.
Best Practices
Wenn Sie zum ersten Mal mit Cloud Tasks oder App Engine arbeiten, sollten Sie Ihre Warteschlangen ausschließlich mit der Cloud Tasks API verwalten und auf den Einsatz von queue.yaml
verzichten. Die Cloud Tasks-Methoden zur Warteschlangenverwaltung bieten Nutzern beim Erstellen, Aktualisieren und Löschen von Warteschlangen mehr Flexibilität.
Wenn Sie jedoch bereits queue.yaml
-Nutzer sind, sollten Sie nur dann zu einer anderen Methode zur Warteschlangenverwaltung wechseln, wenn Sie wissen,
Fallstricke bei der kombinierten Verwendung von queue.yaml
mit Cloud Tasks-Methoden zur Warteschlangenverwaltung
Um zu verhindern, dass Nutzer verschiedene Methoden zur Aufgabenverwaltung verwenden, können Sie eine Webanwendung oder ein Befehlszeilentool erstellen, die bzw. das alle Nutzer zum Erstellen, Aktualisieren und Löschen von Warteschlangen verwenden müssen. Ob dieses Tool die Cloud Tasks-Methoden zur Warteschlangenverwaltung oder queue.yaml
verwendet, ist ein Implementierungsdetail des Tools, über das sich Nutzer keine Gedanken machen müssen. Wenn Nutzende das Tool verwenden müssen,
können Sie sicherstellen, dass nicht versehentlich
Cloud Tasks-Methoden zur Warteschlangenverwaltung und queue.yaml
verwenden.
Um die Verwendung eines solchen Tools zu erzwingen, können Sie dem Tool Rollen als Warteschlangenadministrator zuweisen.
und Nutzer müssen sich authentifizieren, um das Tool verwenden zu können. Weitere Informationen zur Zugriffsverwaltung finden Sie unter Konfiguration sicherer Warteschlangen.
Debugging
In den Audit-Logs zur Administratoraktivität des Projekts können Sie sich über den Verlauf der Änderungen an der Warteschlangenkonfiguration einschließlich Erstell-, Aktualisierungs- und Löschvorgängen von Warteschlangen informieren:
gcloud logging read \
'protoPayload.methodName=
(com.google.appengine.legacy.queue_created OR
com.google.appengine.legacy.queue_updated OR
google.cloud.tasks.v2.CloudTasks.CreateQueue OR
google.cloud.tasks.v2.CloudTasks.UpdateQueue OR
google.cloud.tasks.v2.CloudTasks.DeleteQueue)'
Wenn beispielsweise eine vorhandene Warteschlange durch einen queue.yaml
-Upload deaktiviert ist, wird mit der Methode com.google.appengine.legacy.queue_updated
im Audit-Log die Meldung „Warteschlange '[NAME_DER_WARTESCHLANGE]' deaktiviert“ angezeigt.
So setzen Sie eine Warteschlange fort, die durch einen queue.yaml
-Upload deaktiviert wurde.
Wenn Sie queue.yaml
zusammen mit den Cloud Tasks-Methoden zur Warteschlangenverwaltung verwenden, kann durch das Hochladen einer queue.yaml
-Datei eine über die Cloud Tasks API erstellte Warteschlange versehentlich deaktiviert werden.
Sie können entweder ResumeQueue
für die Warteschlange aufrufen oder die Warteschlange in die Datei queue.yaml
aufnehmen und hochladen, um die Warteschlange fortzusetzen. Wenn Sie für die Warteschlange zuvor in der Konfigurationsdatei queue.yaml
eine benutzerdefinierte Verarbeitungs-rate
festgelegt haben, setzt ResumeQueue
die Warteschlange auf die Standard-rate
zurück. Dies zeigt sich auch im Feld maxDispatchesPerSecond
der Antwort auf ResumeQueue
.
Kontingente
Wenn Sie queue.yaml
zum Erstellen von Warteschlangen verwenden, können Sie standardmäßig maximal 100 Warteschlangen erstellen. Warteschlangen, die mit der Cloud Tasks API erstellt wurden, haben standardmäßig maximal 1.000 Warteschlangen. Wie in anderen Fällen kann das gemeinsame Verwenden von queue.yaml
und Cloud Tasks API-Methoden zu unerwarteten Ergebnissen führen. Angenommen, Sie erstellen einige Warteschlangen mit queue.yaml
und erhalten dann eine Kontingenterhöhung auf beispielsweise 2.000. Wenn Sie anschließend die Cloud Tasks API-Methode zum Erstellen weiterer Warteschlangen verwenden, werden Kontingentfehler zurückgegeben. Um dies zu beheben,
Sie können über Kontingente bearbeiten auf der Seite „Kontingente“ von
in der Google Cloud Console.
Weitere Informationen zu Cloud Tasks-Methoden zur Warteschlangenverwaltung
Warteschlangenkonfiguration und Verzögerung des Warteschlangenstarts
Änderungen an der Warteschlangenkonfiguration treten unter Umständen erst nach mehreren Minuten in Kraft. Wenn Sie beispielsweise CreateQueue
oder UpdateQueue
aufrufen, können mehrere Minuten vergehen, bevor Sie CreateTask
für die jeweilige Warteschlange erfolgreich aufrufen können.
Cloud Tasks und die default
-App Engine-Warteschlange default
Die App Engine-Warteschlange mit dem Namen "default" wird im App Engine SDK und in der Cloud Tasks API gesondert behandelt.
Wenn die Warteschlange default
noch nicht vorhanden ist, wird sie in den folgenden Situationen erstellt:
- Wenn eine Aufgabe erstmals mit dem App Engine SDK zur
default
-Warteschlange hinzugefügt wird. - Wenn eine
queue.yaml
-Datei hochgeladen wird, die einedefault
-Warteschlange angibt. - Wenn
CreateQueue
oderUpdateQueue
aufgerufen wird, um die Warteschlangedefault
zu erstellen.
Cloud Tasks erzwingt folgende Einschränkungen, um die Kompatibilität mit App Engine zu wahren:
- Wenn eine Warteschlange namens "default" erstellt wird, muss es eine Warteschlange mit App Engine-Aufgaben sein.
- Nutzer können die
default
-Warteschlange nach dem Erstellen nicht mehr löschen.
In der Cloud Tasks API gilt für die default
-Warteschlange außerdem Folgendes:
- In der Cloud Tasks API werden die Warteschlange
default
oder andere Warteschlangen nicht automatisch erstellt. - Wie bei jeder anderen Warteschlange führt der Aufruf von
GetQueue
für die Warteschlangedefault
zu einem Fehler "Nicht gefunden", wenn der Aufruf vor Erstellung der Warteschlange erfolgt ist. - Analog dazu wird die Warteschlange
default
in der Ausgabe vonListQueues
nicht angezeigt, wenn die Warteschlange noch nicht erstellt wurde. - Die Konfiguration der Warteschlange
default
kann mit dem Aufruf vonUpdateQueue
geändert werden.
Nächste Schritte
- Informationen zu den in der RPC Cloud Tasks API verfügbaren Methoden finden Sie in den Referenzdokumenten.
- Informationen zu den in der REST Cloud Tasks API verfügbaren Methoden finden Sie in den Referenzdokumenten.
- Weitere Informationen zu
queue.yaml