您可能需要變更 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_apis 為 true ,則支援 |
如果您未使用 Python 3 的舊版套裝組合服務,請使用身分與存取權管理 (IAM) 來管理使用者。 |
處理常式:指令碼 | 已修改 | 在 Python 2 執行階段中,您可以使用 script 欄位,將傳入的要求轉送至應用程式的指令碼。在 Python 3 執行階段中,您必須使用內建路由功能的網路架構 (例如 Flask 或 Django),而非使用 如要將
靜態檔案處理方式則維持不變。 |
如果您使用任何已淘汰的欄位,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
檔案安裝依附元件,包括使用原生程式碼的依附元件。