透過工作佇列處理的發送工作可能會因各種因素而失敗。如果處理常式無法執行工作 (並因此傳回 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 秒...)。
<?xml version="1.0" encoding="utf-8"?>
<queue-entries>
<queue>
<name>fooqueue</name>
<rate>1/s</rate>
<retry-parameters>
<task-retry-limit>7</task-retry-limit>
<task-age-limit>2d</task-age-limit>
</retry-parameters>
</queue>
<queue>
<name>barqueue</name>
<rate>1/s</rate>
<retry-parameters>
<min-backoff-seconds>10</min-backoff-seconds>
<max-backoff-seconds>200</max-backoff-seconds>
<max-doublings>0</max-doublings>
</retry-parameters>
</queue>
<queue>
<name>bazqueue</name>
<rate>1/s</rate>
<retry-parameters>
<min-backoff-seconds>10</min-backoff-seconds>
<max-backoff-seconds>300</max-backoff-seconds>
<max-doublings>3</max-doublings>
</retry-parameters>
</queue>
</queue-entries>
後續步驟
- 進一步瞭解工作佇列參數。