如要在 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_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: 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 檔案安裝依附元件,包括使用原生程式碼的依附元件。