本頁面說明如何在標準環境中,搭配 Python 3 執行階段使用 Deferred API (其中一項舊版套裝服務)。應用程式可透過 Python 3 專用的 App Engine 服務 SDK 存取套裝組合服務。
總覽
先前,Deferred 套件 google.appengine.ext.deferred
依附於 Python 2 中的 webapp 架構。由於 Python 3 適用的 App Engine 服務 SDK 已移除 webapp 架構,因此將 Python 2 應用程式升級至 Python 3 時,您需要進行一些變更。
啟用延遲 API
如要為 Python 3 啟用 Deferred API,您不必再於 app.yaml
檔案中將 builtins.deferred
設為 on
。如要啟用 API,您必須在對 wrap_wsgi_app()
的呼叫中傳遞 use_deferred=True
。
相似與不同之處
根據預設,Python 3 的 Deferred API 會使用與 Python 2 相同的網址 /_ah/queue/deferred
和預設佇列。請注意,應用程式遷移至 Cloud Tasks 時,系統不會自動建立預設佇列,且無法使用延遲工作程式庫。
如果應用程式使用預設的 /_ah/queue/deferred
端點,在 Python 3 中使用 deferred.defer()
的方式與 Python 2 相同。如果應用程式使用自訂網址執行延後工作,您需要進行一些變更,因為 Python 3 版本的這個 API 已移除 Python 2 deferred
模組中的 TaskHandler
類別。
如要為延後執行的工作設定自訂網址,應用程式可以覆寫 deferred.Handler
類別 (在 Python 2 中為 deferred.TaskHandler
) 中的 post
或 run_from_request
方法,並傳遞 environ
參數,該參數代表包含 WSGI 要求參數的字典。接著,您可以從自訂端點呼叫 post
方法 (如 Python 3 範例所示)。
Python 3 Deferred API 的端對端使用方式 (例如要求的轉送和存取 environ
字典),取決於應用程式要遷移的網路架構。比較下列各節中,從 Python 2 範例到 Python 3 範例所做的程式碼變更。
Python 3 範例
以下範例說明如何在 Flask 應用程式和 Django 應用程式中,使用預設端點和自訂端點執行延後工作。
Flask
Django
不使用任何架構
程式碼範例
如要查看本指南的完整程式碼範例,請參閱 GitHub。