Fehlgeschlagene Push-Aufgaben wiederholen
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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 queue.yaml
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.
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
Nächste Schritte
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2025-09-04 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-09-04 (UTC)."],[[["\u003cp\u003ePush tasks in App Engine are automatically retried upon failure, with the system gradually reducing the retry rate to prevent application overload, up to a maximum of once per hour.\u003c/p\u003e\n"],["\u003cp\u003eCustom retry schemes can be configured using the \u003ccode\u003eretry_parameters\u003c/code\u003e element in \u003ccode\u003equeue.yaml\u003c/code\u003e, allowing control over the maximum number of retries, the retry time limit, and the interval between retries.\u003c/p\u003e\n"],["\u003cp\u003eDifferent retry strategies can be implemented, including fixed retry limits, linearly increasing retry intervals, and exponentially increasing intervals with a cap, as demonstrated by the \u003ccode\u003efooqueue\u003c/code\u003e, \u003ccode\u003ebarqueue\u003c/code\u003e, and \u003ccode\u003ebazqueue\u003c/code\u003e examples.\u003c/p\u003e\n"],["\u003cp\u003eThis retry API is compatible with first-generation runtimes and can be used during upgrades to second-generation runtimes, with a separate migration guide for PHP 7/8 runtimes.\u003c/p\u003e\n"]]],[],null,["# Retrying Failed Push Tasks\n\nPush tasks being processed via a task queue can fail for many reasons. If a handler\nfails to execute a task (and therefore returns any HTTP status code outside of\nthe range 200--299), App Engine retries the task until it succeeds.\n| This API is supported for first-generation runtimes and can be used when [upgrading to corresponding second-generation runtimes](/appengine/docs/standard/\n| php-gen2\n|\n| /services/access). If you are updating to the App Engine PHP 7/8 runtime, refer to the [migration guide](/appengine/migration-center/standard/migrate-to-second-gen/php-differences) to learn about your migration options for legacy bundled services.\n\nBy default, the system gradually reduces the retry rate to avoid overloading your application with too many\nrequests, but schedules retry attempts to recur at a maximum of once per hour\nuntil the task succeeds.\n\n\nRetrying tasks\n--------------\n\nYou can customize your own scheme for task retries by\nadding the [retry\nparameters](/appengine/docs/legacy/standard/php/config/queueref#retry_parameters)\nelement in [`queue.yaml`](/appengine/docs/legacy/standard/php/config/queueref). This\naddition allows you to specify the maximum number of times to retry failed tasks\nin a specific queue. You can also set a time limit for retry attempts and\ncontrol the interval between attempts.\n\nThe following example demonstrates various retry scenarios:\n\n- In `fooqueue`, tasks are retried up to seven times and for up to two days from the first execution attempt. After both limits are passed, it fails permanently.\n- In `barqueue`, App Engine attempts to retry tasks, increasing the interval linearly between each retry until reaching the maximum backoff and retrying indefinitely at the maximum interval (so the intervals between requests are 10s, 20s, 30s, ..., 190s, 200s, 200s, ...).\n- In `bazqueue`, the retry interval starts at 10s, then doubles three times, then increases linearly, and finally retries indefinitely at the maximum interval (so the intervals between requests are 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, ...).\n\n queue:\n - name: fooqueue\n rate: 1/s\n retry_parameters:\n task_retry_limit: 7\n task_age_limit: 2d\n - name: barqueue\n rate: 1/s\n retry_parameters:\n min_backoff_seconds: 10\n max_backoff_seconds: 200\n max_doublings: 0\n - name: bazqueue\n rate: 1/s\n retry_parameters:\n min_backoff_seconds: 10\n max_backoff_seconds: 300\n max_doublings: 3\n\nWhat's next\n-----------\n\n- Learn more about the [task queue parameters](/appengine/docs/legacy/standard/php/config/queueref)."]]