Push-Aufgaben aus Aufgabenwarteschlangen können aus verschiedenen Gründen fehlschlagen. Wenn eine Aufgabe nicht ausgeführt werden kann, d. h., wenn ein HTTP-Statuscode außerhalb des Bereichs 200–299 ausgegeben wird, wiederholt App Engine die Aufgabe so oft, bis die Ausführung erfolgreich ist.
Standardmäßig verringert das System die Wiederholungsrate nach und nach, um die Anwendung nicht mit zu vielen Anfragen zu überlasten. Die Wiederholungsversuche werden jedoch mindestens einmal pro Stunde durchgeführt, bis die Aufgabe erfolgreich ist.
Fehlgeschlagene Aufgaben wiederholen
Sie können Ihr eigenes Schema für das Wiederholen von Aufgaben anpassen. Dazu fügen Sie das Element retry_parameters in die Datei
ein. Durch diese Ergänzung können Sie die maximale Anzahl an Wiederholungsversuchen für fehlgeschlagene Aufgaben in einer bestimmten Warteschlange angeben. Außerdem können Sie ein Zeitlimit für Wiederholungsversuche festlegen und den Zeitabstand zwischen den Versuchen individuell steuern.queue.yaml
Im folgenden Beispiel werden verschiedene Wiederholungsszenarien demonstriert:
- In
fooqueue
werden Aufgaben bis zu siebenmal und bis zu zwei Tage nach dem ersten Ausführungsversuch wiederholt. Nachdem beide Limits überschritten wurden, gilt die Ausführung als endgültig gescheitert. - In
barqueue
versucht App Engine, Aufgaben zu wiederholen, wobei das Intervall zwischen nachfolgenden Wiederholungsversuchen linear erhöht wird, bis der maximale Backoff erreicht ist. Daraufhin finden Wiederholungen auf unbestimmte Zeit nach jeweils dem maximalen Intervall statt (die Intervalle zwischen den Anfragen sind 10 s, 20 s, 30 s..., 190 s, 200 s, 200 s...). - In
bazqueue
beginnt das Wiederholungsintervall bei 10 s, verdoppelt sich dreimal und steigt dann linear bis zum maximalen Intervall an, mit dem auf unbestimmte Zeit wiederholt wird (die Intervalle zwischen den Anfragen sind also 10 s, 20 s, 40 s, 80 s, 160 s, 240 s, 300 s, 300 s, ...).
queue:
- name: fooqueue
rate: 1/s
retry_parameters:
task_retry_limit: 7
task_age_limit: 2d
- name: barqueue
rate: 1/s
retry_parameters:
min_backoff_seconds: 10
max_backoff_seconds: 200
max_doublings: 0
- name: bazqueue
rate: 1/s
retry_parameters:
min_backoff_seconds: 10
max_backoff_seconds: 300
max_doublings: 3