Google App Engine: Task_retry_limit Doesn't Work?
I have a Python GAE app. I want my tasks to stop running or just retry once if they fail. Right now, they run forever despite what my yaml file is telling them! Here is a queue.yam
Solution 1:
I had the same problem. The documentation and tooling in this area is lacking, but here's what I found:
- The retry parameters have no effect in the development server. I tried lots of different combinations, but it was always just indefinite retries 30s apart. The parameters did take effect when I deployed to the production server.
- I haven't found a way to disable all retries (other than by ensuring that my handler doesn't throw exceptions).
- If
task_retry_limit=0
, then it still retries. - If
task_retry_limit=0
andtask_age_limit
is set, then the queue.yaml is rejected with a message thattask_retry_limit
must be positive. - Similarly, it complains if
task_age_limit=0
. - If you set
task_retry_limit=1
andtask_age_limit=1s
(apparently the minimum values), you still get one retry.
- If
- The minimum retry time is 20 seconds. If the delay specified by your configuration is les than 20, than it will just wait 20 seconds.
- The time before the first retry is unpredictable; it seems to be randomly delayed by up to a minute. After that, the retries follow the configured schedule.
Solution 2:
I had the same problem, strangely it seems to start working fine after I left it as is for few hours... Perhaps there is some time needed for GAE to refresh??
Anyway, the settings worked for me are:
# configure the default queue
- name: default
rate: 1/s
retry_parameters:
# task will stop retrying ONLY when BOTH LIMITS ARE REACHED
task_retry_limit: 1
task_age_limit: 1s
Solution 3:
You should set task_retry_limit
to be zero if you don't want it retried at all, and you need to use this in combination with task_age_limit
. The appengine task queue retry logic uses a combination of task_try_limit
and task_age_limit
to determine when to stop retrying.
Post a Comment for "Google App Engine: Task_retry_limit Doesn't Work?"