Google App Engine:task_retry_limit不起作用? [英] Google App Engine: task_retry_limit doesn't work?
问题描述
我有一个Python GAE应用程序。
我希望我的任务停止运行,或者只是在失败时重试一次。现在,尽管我的yaml文件告诉他们,他们仍会永远运行!
以下是一个queue.yaml条目:
- name:globalPurchase
rate:10 / s
bucket_size:100
retry_parameters:
task_retry_limit:1
如果globalPurchase任务失败并显示500错误代码,则会永久重试它,直到它在日志中成功显示此消息:
队列globalPurchase上名为task14的任务失败,代码为500;将在30秒内重试
为什么task_retry_limit实际上没有被使用?我有同样的问题。在这方面的文档和工具是缺乏的,但这里是我发现的:
task_retry_limit = 0
,那么它仍会重试
task_age_limit
被设置,那么queue.yaml被拒绝,消息是
task_age_limit = 0
。 task_retry_limit = 1
和 task_age_limit = 1s
(显然是最小值)仍然得到一次重试。
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.yaml entry:
- name: globalPurchase
rate: 10/s
bucket_size: 100
retry_parameters:
task_retry_limit: 1
If globalPurchase task fails with a 500 error code, it is retried forever until it succeeds with this message in the logs:
"Task named "task14" on queue "globalPurchase" failed with code 500; will retry in 30 seconds"
Why is task_retry_limit not actually being used?
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.
这篇关于Google App Engine:task_retry_limit不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!