Google App Engine:task_retry_limit 不起作用?
我有一个 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实际上没有被使用?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我也有同样的问题。缺乏该领域的文档和工具,但我发现以下内容:
task_retry_limit=0
,则仍会重试。task_retry_limit=0
和task_age_limit
,则queue.yaml 会被拒绝,并显示一条消息:task_retry_limit
必须为正值。< /里>task_age_limit=0
,它也会发出抱怨。task_retry_limit=1
和task_age_limit=1s
(显然是最小值),您仍然可以重试一次。I had the same problem. The documentation and tooling in this area is lacking, but here's what I found:
task_retry_limit=0
, then it still retries.task_retry_limit=0
andtask_age_limit
is set, then the queue.yaml is rejected with a message thattask_retry_limit
must be positive.task_age_limit=0
.task_retry_limit=1
andtask_age_limit=1s
(apparently the minimum values), you still get one retry.我也遇到了同样的问题,奇怪的是,在我将其原样放置几个小时后,它似乎开始正常工作...也许 GAE 需要一些时间来刷新?
无论如何,对我有用的设置是:
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:
如果您根本不希望重试,则应将
task_retry_limit
设置为零,并且需要将其与task_age_limit
结合使用。 appengine 任务队列重试逻辑使用task_try_limit
和task_age_limit
的组合来确定何时停止重试。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 withtask_age_limit
. The appengine task queue retry logic uses a combination oftask_try_limit
andtask_age_limit
to determine when to stop retrying.