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

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

  • 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,為每個 worker 設定 1 個執行緒。

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

請參閱「進入點最佳做法」,瞭解每個例項類別的建議 worker 數量。
libraries 已停止支援 使用 requirements.txt 檔案宣告依附元件並安裝用戶端程式庫
處理常式:login 如果 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: python313
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 檔案安裝依附元件,包括使用原生程式碼的依附元件。