本頁面說明如何建立 App Engine「工作處理常式」;工作處理常式是指能夠處理 App Engine 工作的工作站程式碼。Cloud Tasks 佇列會將 HTTP 要求傳送到工作處理常式。在順利完成處理作業後,處理常式必須傳送一個介於 200
到 299
之間的 HTTP 狀態碼到佇列。如果傳送的是任何其他數值,則代表工作失敗且佇列會重試工作。
App Engine 工作佇列要求會從 IP 位址 0.1.0.2
送出。另請參閱傳送至 App Engine 環境的要求 IP 範圍。
C#
Go
Java
Node.js
PHP
Python
Ruby
逾時
App Engine 工作有其特定的逾時時間,這會根據執行 App Engine 工作之服務的資源調度類型而定。
對於在標準環境中執行的工作站服務:
- 自動調整資源配置:工作處理作業必須在 10 分鐘內完成。
- 手動調整資源配置和基本資源配置:要求最多可執行 24 小時。
對於在彈性環境中執行的工作站服務:所有類型都會在超過 60 分鐘後逾時。
如果您的處理常式超過期限,佇列會認定工作失敗並重試工作。
讀取 App Engine 工作要求標頭
Cloud Tasks 佇列傳送至 App Engine 處理常式的要求會包含特殊標頭,其中含有處理常式可能需要的工作專屬資訊。
這些標頭由內部設定。如果外部使用者對您應用程式發出的要求中出現這些標頭,系統會以內部標頭取代這些標頭,但如果要求來自於已登入應用程式的管理員,則屬例外情況,系統允許管理員設定標頭以進行測試。
App Engine 工作要求一律包含下列標頭:
標頭 | 說明 |
---|---|
X-AppEngine-QueueName |
佇列名稱。 |
X-AppEngine-TaskName |
工作的「簡短」名稱;如果在建立工作時沒有指定名稱,則是由系統產生的唯一 ID 來代替。這是完整工作名稱中的 my-task-id 值,例如 task_name = projects/my-project-id/locations/my-location/queues/my-queue-id/tasks/my-task-id 。 |
X-AppEngine-TaskRetryCount |
工作重試次數。若為第一次嘗試,此值為 0 。這個數字會將工作因欠缺可用執行個體,所以從未達到執行階段而失敗的次數計算在內。 |
X-AppEngine-TaskExecutionCount |
工作執行次數,以及處理常式收到回應的次數。由於 Cloud Tasks 會在收到成功回應後刪除工作,因此先前所有處理常式回應都會失敗。這個數字不包括因欠缺可用執行個體而失敗的次數。請注意,如果 X-AppEngine-TaskExecutionCount 在嘗試執行前更新,則 X-AppEngine-TaskExecutionCount 可能等於 X-AppEngine-TaskRetryCount 。 |
X-AppEngine-TaskETA |
工作的排程時間,從 1970 年 1 月 1 日算起並以秒數表示。 |
如果要求處理常式包含任何上述標頭,即可假設這項要求是由 Cloud Tasks 發出。
此外,Cloud Tasks 發出的要求還可能包含下列標頭:
標頭 | 說明 |
---|---|
X-AppEngine-TaskPreviousResponse |
來自上次重試的 HTTP 回應碼。 |
X-AppEngine-TaskRetryReason |
重試工作的原因。 |
X-AppEngine-FailFast |
表示如果沒有可用的現有執行個體,工作會立即失敗。 |
目標轉送
在 App Engine 工作中,佇列和工作處理常式都會在同一個 Google Cloud 專案中執行。流量在傳輸時會經過加密,且絕不會從 Google 資料中心外流。您無法明確設定通訊協定 (例如 HTTP 或 HTTPS)。不過,對處理常式的要求會顯示已使用 HTTP 通訊協定。
工作可能會分派到安全的工作處理常式、不安全的工作處理常式,以及在支援的執行階段中,受 login: admin
限制的 URI。由於工作並非以任何使用者的身分執行,因此「無法」分派到受 login: required
限制的 URI。工作分派也不會追蹤重新導向。
後續步驟
- 參閱 RPC API 參考資料進一步瞭解工作。
- 參閱 REST API 參考資料進一步瞭解工作。