Sie können zwar eine queue.yaml
Datei zum Verwalten von Warteschlangen verwenden, aber die Kombination von Methoden zur Warteschlangenverwaltung kann zu unerwarteten Ergebnissen führen. In diesem Leitfaden werden die Risiken der Kombination dieser Methoden erläutert und Sie erfahren, wie Sie häufige Konfigurationsprobleme beheben.
Die Cloud Tasks API bietet eine unabhängige Schnittstelle zum App Engine-Dienst für Aufgabenwarteschlangen. Über diese Schnittstelle können Sie Warteschlangen über die Google Cloud Console oder die Google Cloud CLI verwalten. Warteschlangen, die Sie mit der Cloud Tasks API erstellen, sind über das App Engine SDK zugänglich. Das App Engine SDK ist eine Sammlung plattformspezifischer APIs, eigenständiger Tools und Laufzeitdateien. Warteschlangen, die mit dem App Engine SDK erstellt wurden, sind über die Cloud Tasks API zugänglich.
Zur Gewährleistung der Kompatibilität können Sie queue.yaml, die Konfigurationsdatei für das App Engine SDK, verwenden, um Warteschlangen für die Cloud Tasks API zu erstellen und zu konfigurieren. Die Verwaltung von Warteschlangen mit dieser Datei und der Cloud Tasks API kann jedoch zu Problemen führen, die in diesem Leitfaden beschrieben werden.
Hinweis
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 die Verwendung von queue.yaml verzichten. Die Cloud Tasks-Methoden zur Warteschlangenverwaltung bieten Ihnen mehr Optionen zum Erstellen, Aktualisieren und Löschen von Warteschlangen.
Wenn Sie bereits queue.yaml verwenden, sollten Sie nur dann zu
den Cloud Tasks-Methoden zur Warteschlangenverwaltung wechseln, wenn Sie die
Risiken der Kombination von Methoden zur Warteschlangenverwaltung kennen.
Methode zur Warteschlangenverwaltung erzwingen
Um die Kombination von Methoden zur Warteschlangenverwaltung zu verhindern, können Sie eine Webanwendung oder ein Befehlszeilentool zum Erstellen, Aktualisieren und Löschen von Warteschlangen erstellen. Ob dieses Tool Cloud Tasks-Methoden zur Warteschlangenverwaltung oder queue.yaml verwendet, ist ein Implementierungsdetail, das Nutzer nicht kennen müssen. Wenn Sie die Verwendung des Tools erzwingen, können Sie sicherstellen, dass die Methoden nicht versehentlich kombiniert werden.
Weisen Sie dem Tool die Cloud Tasks-Rolle „Identity and Access Management“ (Queue Admin) zu und fordern Sie Nutzer auf, sich zu authentifizieren. Weitere Informationen zur
Zugriffsverwaltung finden Sie unter
Warteschlangenkonfiguration schützen.
Verzögerungen bei der Warteschlangenkonfiguration
Es kann mehrere Minuten dauern, bis Änderungen an der Warteschlangenkonfiguration wirksam werden. Wenn Sie beispielsweise CreateQueue oder UpdateQueue aufrufen, kann es mehrere Minuten dauern, bis Sie für die jeweilige Warteschlange erfolgreich CreateTask aufrufen können.
default-Warteschlange von App Engine
Die App Engine-Warteschlange mit dem Namen default wird im App Engine SDK und in der Cloud Tasks API gesondert behandelt.
Wann wird die default-Warteschlange erstellt? | |
|---|---|
Wenn die |
|
| Welche Einschränkungen erzwingt Cloud Tasks? | |
Um die Kompatibilität mit App Engine zu wahren,
erzwingt Cloud Tasks die folgenden Einschränkungen für die
|
|
Risiken der Kombination von Methoden zur Warteschlangenverwaltung
Für den zugrunde liegenden Dienst sind queue.yaml-Dateien maßgeblich. Wenn Sie eine
queue.yaml Datei hochladen, in der ein Teil der Warteschlangen Ihres Projekts fehlt, werden diese Warteschlangen deaktiviert oder
angehalten
. Das gilt unabhängig davon, wie
sie erstellt wurden. Wenn Sie beispielsweise über die Cloud Tasks API CreateQueue oder UpdateQueue aufrufen und anschließend eine queue.yaml-Datei hochladen, in der diese Warteschlangen fehlen, werden die Warteschlangen deaktiviert. Sie müssen die deaktivierten Warteschlangen dann wieder aktivieren.
Die Kombination von Methoden zur Warteschlangenverwaltung kann zu unerwartetem Verhalten führen. Betrachten Sie beispielsweise die folgenden Szenarien:
Szenario 1
Sie rufen CreateQueue auf, um eine Warteschlange mit dem Namen cloud-tasks-queue zu erstellen, und laden dann eine queue.yaml-Datei mit folgendem Inhalt hoch:
queue:
- name: queue-yaml-queue
Dies führt zu den folgenden Warteschlangenstatus:
- Der Status der Warteschlange mit dem Namen
cloud-tasks-queueund aller anderen bisher vorhandenen Warteschlangen istDISABLED. - Der Status der Warteschlange mit dem Namen
queue-yaml-queueistRUNNING.
Szenario 2
Sie deaktivieren eine Warteschlange mit der Cloud Tasks API, aber sie wird später in einer hochgeladenen queue.yaml-Datei angezeigt. Die Warteschlange wird wieder aktiviert.
Szenario 3
Sie löschen eine Warteschlange mit der Methode DeleteQueue und sie wird später in einer queue.yaml-Datei angezeigt. Das Hochladen von queue.yaml kann fehlschlagen, da
Warteschlangennamen nach dem Löschen mehrere Tage
nicht wiederverwendet werden dürfen.
Fehlerbehebung mit Audit-Logs
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.
Wenn beispielsweise durch das Hochladen von queue.yaml eine vorhandene Warteschlange deaktiviert wird, können Sie den folgenden Befehl ausführen, um über die com.google.appengine.legacy.queue_updated Methode einen Disabled queue QUEUE_NAME Logeintrag zurückzugeben:
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)'
Weitere Informationen finden Sie unter Logeinträge lesen.
Warteschlange wieder aktivieren, die durch das Hochladen von queue.yaml deaktiviert wurde
Wenn Sie Methoden zur Warteschlangenverwaltung kombinieren, kann durch das Hochladen einer queue.yaml Datei
eine über die Cloud Tasks API erstellte Warteschlange versehentlich deaktiviert werden.
Um die Warteschlange wieder zu aktivieren, können Sie entweder ResumeQueue für die Warteschlange aufrufen oder sie zu queue.yaml hinzufügen und hochladen.
Wenn Sie zuvor in der queue.yaml
Konfiguration eine benutzerdefinierte Verarbeitung
rate festgelegt haben, setzt ResumeQueue die Warteschlange auf die Standard-rate zurück. Dies zeigt sich
auch im
maxDispatchesPerSecond
Feld der Antwort auf ResumeQueue.
Kontingentprobleme beheben
Wenn Sie queue.yaml zum Erstellen von Warteschlangen verwenden, hat Ihr Projekt ein Standardkontingent
für die
maximale Anzahl von Warteschlangen, die Sie
erstellen können. Warteschlangen, die mit der Cloud Tasks API erstellt wurden, haben ebenfalls ein
Standardkontingent. Wie in anderen Fällen kann das Mischen von queue.yaml- und Cloud Tasks API-Methoden zu unerwarteten Ergebnissen führen.
Wenn Sie beispielsweise Warteschlangen mit queue.yaml erstellen und dann eine Kontingenterhöhung erhalten, können bei der anschließenden Erstellung weiterer Warteschlangen mit der Cloud Tasks API Kontingentfehler auftreten. Sie können dieses Problem beheben, indem Sie Ihre Kontingente über die Google Cloud Console verwalten. Weitere Informationen finden Sie unter
Kontingente über die Console verwalten.