我有一个Python GAE应用程序。
我希望我的任务停止运行,或者只是在失败时重试一次。现在,尽管我的yaml文件告诉他们,他们仍然会永远奔跑!
这是一个queue.yaml条目:
- name: globalPurchase
rate: 10/s
bucket_size: 100
retry_parameters:
task_retry_limit: 1
如果globalPurchase任务因500错误代码而失败,则会一直重试,直到日志中显示此消息成功:
“任务名为”task14“在队列中”globalPurchase“失败,代码为500;将在30秒后重试”
为什么没有实际使用task_retry_limit?
答案 0 :(得分:7)
我遇到了同样的问题。这方面的文档和工具缺乏,但这是我发现的:
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
(显然是最小值),您仍然可以重试一次。答案 1 :(得分:4)
我遇到了同样的问题,奇怪的是,我离开它几个小时后似乎开始工作正常......也许GAE需要一些时间来刷新?
无论如何,适合我的设置是:
# 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
答案 2 :(得分:2)
如果您根本不想重试task_retry_limit
,则应将task_age_limit
设置为零,并且需要将其与task_try_limit
结合使用。 appengine任务队列重试逻辑使用task_age_limit
和{{1}}的组合来确定何时停止重试。