重試已失敗的發送工作

透過工作佇列處理的發送工作可能會因各種因素而失敗。如果處理常式無法執行工作 (並因此傳回 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

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Python 2 適用的 App Engine 標準環境