【发布时间】:2016-01-11 11:54:48
【问题描述】:
我有一个 cron 作业,它启动一个在单独队列中运行的延迟任务。我已将此队列的重试限制设置为 1。由于此任务使用大量数据存储调用,我不希望它在发生故障时继续重试。
尽管我的 queue.yaml 定义如下,但延迟任务似乎继续重试:
queue:
- name: stopretrying
rate: 35/s
max_concurrent_requests: 2
retry_parameters:
task_retry_limit: 1
task_age_limit: 1d
谁能解释这种叛逆行为?
谢谢你,美好的一天
【问题讨论】:
-
您是否确认它正在重试处理程序 (cron) 未重新安排。你会命名任务吗?
-
我的 cron 每 24 小时运行一次。我没有命名该任务,因为该任务是队列中唯一使用的任务。我确信它正在重试,因为它在应用引擎控制台上的任务队列概述中是这么说的。
-
如果在任务队列确实正在重提任务的情况下问题仍然存在,那么在调度它们时命名任务意味着如果它已经在队列中并且未运行,您将收到一个 TaskAlreadyExistsError,如果它已经在运行,则会收到 TombstonedTaskError运行并被重新安排(即由于错误)。例如,您可以为任务指定一个唯一的名称(在 24 小时内)。
-
重命名任务并不能解决问题。难道是我需要使用xml格式而不是java的yaml?这似乎不太可能,因为确实生成了队列(这意味着文件被正确解析,因为设置都匹配)
标签: java google-app-engine task-queue