通过任务队列处理的推送任务可能会因多种原因而失败。如果处理程序执行任务失败(并因此返回超出 200–299 范围的任何 HTTP 状态代码),App Engine 会重试该任务,直到成功为止。
默认情况下,为避免因请求过多而导致应用过载,系统会逐步降低重试速率,但会将重试尝试频率安排为最多每小时一次,直至任务成功为止。
重试任务
您可以通过在
中添加重试参数元素来自定义自己的任务重试方案。通过添加相应的值,您可以指定特定队列中失败任务的最大重试次数。您还可以为重试尝试设置时间限制,控制重试之间的时间间隔。queue.yaml
以下示例演示了各种重试方案:
- 在
fooqueue
中,从第一次尝试执行算起,任务最多重试七次,最长持续两天。两个限制都达到后,任务将永远失败。 - 在
barqueue
中,App Engine 会尝试重试任务,线性地增加每次重试之间的时间间隔,直到达到最大退避时间,然后以最大时间间隔无限次重试(因此,请求之间的时间间隔为 10 秒、20 秒、30 秒、…、190 秒、200 秒、200 秒、…)。 - 在
bazqueue
中,重试时间间隔从 10 秒开始,之后加倍三次,然后线性增加,最后以最大时间间隔无限期重试(因此,请求之间的时间间隔为 10 秒、20 秒、40 秒、80 秒、160 秒、240 秒、300 秒、300 秒、…)。
queue:
- name: fooqueue
rate: 1/s
retry_parameters:
task_retry_limit: 7
task_age_limit: 2d
- name: barqueue
rate: 1/s
retry_parameters:
min_backoff_seconds: 10
max_backoff_seconds: 200
max_doublings: 0
- name: bazqueue
rate: 1/s
retry_parameters:
min_backoff_seconds: 10
max_backoff_seconds: 300
max_doublings: 3
后续步骤
- 详细了解任务队列参数。