準備 Python 3 執行階段的設定檔

如要在 App Engine 標準環境的 Python 3 執行階段中執行應用程式,您可能需要變更 App Engine 使用的部分設定檔:

  • app.yaml。這個檔案包含應用程式程式碼的相關資訊,例如執行階段和應用程式處理常式。

  • appengine_config.py。Python 2 執行階段會使用這個檔案存取第三方程式庫,並為常數和「hook 函式」提供值。Python 3 執行階段不會使用這個檔案。

正在更新「app.yaml

app.yaml設定檔中,部分欄位的行為已受到修改。移除不再支援的欄位,並按照下表說明更新其他欄位。

欄位 變更類型 說明
app_engine_apis 僅適用於 Python 3 如要存取 Python 3 的舊版服務套裝組合,必須設為 true
api_version
application_readable
builtins
已停止支援 不適用於 Python 3 執行階段。
threadsafe 已停止支援 系統會假設所有應用程式皆具備「執行緒安全」特性。如果應用程式並非執行緒安全,請指定 entrypoint,為每個工作站設定 1 個執行緒。

舉例來說,使用 F4 執行個體類別時:
entrypoint: gunicorn -b :$PORT -w 8 --threads 1 main:app

請參閱進入點最佳做法,瞭解各執行個體類別建議的工作人員人數。
libraries 已停止支援 使用 requirements.txt 檔案宣告依附元件並安裝用戶端程式庫
處理常式:登入 如果 app_engine_apistrue,則支援此功能 如果您未使用 Python 3 的舊版套裝組合服務,請使用身分與存取權管理 (IAM) 服務管理使用者。
處理常式:指令碼 已修改 在 Python 2 執行階段中,您可以使用 script 欄位,將傳入的要求轉送至應用程式的指令碼。

在 Python 3 執行階段中,您必須使用具備應用程式內轉送機制的網路架構 (例如 Flask 或 Django),而非使用 script 欄位。

如要將 app.yaml 檔案遷移至 Python 3 執行階段,請視檔案是否包含靜態處理常式和指令碼處理常式,採取下列其中一種做法:

  • 如果 app.yaml 檔案包含靜態處理常式,請執行下列其中一項操作,確保動態內容要求會轉送至應用程式的指令碼:
    • 移除所有 script 欄位。然後新增 entrypoint 欄位,啟動執行應用程式的網路伺服器。不符合任何靜態處理常式的要求,都會導向您在 entrypoint 欄位中指定的網路伺服器。網路伺服器和應用程式的網路架構負責將要求轉送至正確的指令碼。
    • 將所有 script 欄位的值替換為 auto。App Engine 會自動在網路伺服器中執行應用程式 (前提是應用程式符合幾項規定),且所有符合指令碼處理常式的要求都會導向網路伺服器。網路伺服器和應用程式的網路架構負責將要求轉送至正確的指令碼。
    • 如果 app.yaml 檔案含靜態處理常式,請移除所有 script 欄位。所有對應用程式的要求都會導向應用程式的網路伺服器,而應用程式的架構會將要求轉送至正確的指令碼。您可以選擇新增 entrypoint 欄位,自訂預設啟動行為。 如果 app.yaml 同時有這兩種處理常式,您仍可移除所有標示為 auto 的指令碼處理常式,只留下靜態處理常式,以及需要其他指令的 auto 處理常式,例如以下範例中的僅限管理員處理常式。

靜態檔案處理方式維持不變。

如果您使用任何已淘汰的欄位,App Engine 會在您部署應用程式時傳回錯誤。

您可以參考下列範例,比較 app.yaml 檔案之間的差異:

Python 2

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  script: home.app

- url: /index\.html
  script: home.app

- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: admin.app
  login: admin

- url: /.*
  script: not_found.app

Python 3

runtime: python314
app_engine_apis: true

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: auto
  login: admin

正在移除「appengine_config.py

App Engine 標準環境中的 Python 2 執行階段會使用 appengine_config.py 檔案。

Python 3 執行階段會忽略這個檔案。Python 3 執行階段會使用標準 requirements.txt 檔案安裝依附元件,包括使用原生程式碼的依附元件。