Push tasks being processed via a task queue can fail for many reasons. If a handler fails to execute a task (and therefore returns any HTTP status code outside of the range 200–299), App Engine retries the task until it succeeds.
By default, the system gradually reduces the retry rate to avoid overloading your application with too many requests, but schedules retry attempts to recur at a maximum of once per hour until the task succeeds.
Retrying tasks
You can customize your own scheme for task retries by
adding the retry
parameters
element in
. This
addition allows you to specify the maximum number of times to retry failed tasks
in a specific queue. You can also set a time limit for retry attempts and
control the interval between attempts.queue.yaml
The following example demonstrates various retry scenarios:
- 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. - 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, ...). - 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, ...).
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
What's next
- Learn more about the task queue parameters.