在執行階段達到支援期限後使用本機開發伺服器

如果執行階段已終止支援,您就無法使用最新版 dev_appserver.py 在本機執行應用程式。如要繼續使用封存的 dev_appserver.py 版本,請按照本指南的指示操作。

您可以使用本機開發伺服器模擬在實際工作環境中執行 App Engine 應用程式,也可以使用該伺服器存取 App Engine 舊版套裝服務。模擬環境會強制執行幾項沙箱限制 (例如設有使用限制的系統功能和執行階段語言模組匯入服務),但不包含要求逾時或配額等其他限制。

App Engine 適用的 SDK 所含程式庫提供多項服務 (包括 Datastore、Memcache 和工作佇列),而本機開發伺服器也會在本機中執行這些服務的工作,以便進行模擬。在開發伺服器中執行應用程式時,仍可使用 Google API HTTP 端點對正式基礎架構進行遠端 API 呼叫。

事前準備

如要下載 devapp_server.py 的封存版本,請按照下列步驟操作:

  1. 封存中,下載包含 dev_appserver.py 伺服器的 ZIP 資料夾,適用於支援期限已屆滿的執行階段。

  2. 將目錄內容解壓縮到本機檔案系統,例如 /home 目錄。您可以在 google_appengine/ 目錄中找到 dev_appserver.py

設定本機開發伺服器

如要執行本機開發伺服器工具,請設定下列項目:

  1. 確認您已安裝 Python 2 解譯器,且版本為 2.7.12 以上。

  2. 在殼層中,將 DEVAPPSERVER_PYTHON 環境變數設為 Python 2 解譯器的路徑。

  3. 在解壓縮下載的封存檔案後,找出 /google_appengine/ 資料夾下的 dev_appserver.py 工具,例如:

    DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py
    

執行本機開發伺服器

設定本機開發伺服器並為應用程式建立 app.yaml 設定檔後,即可使用 dev_appserver.py 指令在本機執行應用程式。

如要啟動本機開發伺服器:

  1. 在包含 app.yaml 設定檔的目錄中,執行 dev_appserver.py 指令。

    指定應用程式目錄的路徑,例如:

       python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --runtime_python_path=/usr/bin/python2 [PATH_TO_YOUR_APP]
    

    您也可以將引數設為以半形逗號分隔的 [RUNTIME_ID]=[PYTHON_INTERPRETER_PATH] 配對清單。例如:

       python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --runtime_python_path="python27=/usr/bin/python2.7" [PATH_TO_YOUR_APP]
    

    如要變更通訊埠,請加入 --port 選項:

       python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py  --runtime_python_path=/usr/bin/python2 --port=9999 [PATH_TO_YOUR_APP]
    

    DEVAPPSERVER_ROOT 替換為您解壓縮 devapp_server.py 封存版本的資料夾路徑。

  2. 本機開發伺服器現已開始執行並監聽要求。你可以透過網路瀏覽器前往 http://localhost:8080/,查看運作中的應用程式。

    如果您使用 --port 選項指定自訂通訊埠,請務必在瀏覽器中開啟該通訊埠。

如要透過指令列停止本機伺服器,請按下下列按鍵:

  • macOS 或 Linux:Control+C
  • Windows:Control+Break

指定應用程式 ID

如想透過本機伺服器查看應用程式 ID,以便代表某個電子郵件地址進行操作或執行其他作業,請使用 get_application_id() 函式。

如要取得運作中應用程式的主機名稱,請使用 get_default_version_hostname() 函式。

偵測應用程式執行階段環境

如要判定程式碼是在實際工作環境還是本機開發伺服器中執行,請檢查 GAE_ENV 環境變數的值:

if os.getenv('GAE_ENV', '').startswith('standard'):
  # Production in the standard environment
else:
  # Local development server

使用本機 Datastore 服務

使用郵件服務

本機開發伺服器可透過 SMTP 伺服器或安裝於本機的 Sendmail 來傳送呼叫 App Engine 郵件服務的電子郵件。

使用 SMTP

如要透過 SMTP 伺服器來啟用郵件支援功能,請叫用 dev_appserver.py,如下所示:

    python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
  --smtp_user=ajohnson --smtp_password=k1tt3ns PATH_TO_YOUR_APP

取代:

  • DEVAPPSERVER_ROOT,其中包含您解壓縮 devapp_server.py封存版本的資料夾路徑。
  • --smtp_host--smtp_port--smtp_user--smtp_password 選項,並填入自己的設定值。
  • PATH_TO_YOUR_APP 替換為應用程式的路徑。

使用 Sendmail

如要透過 Sendmail 啟用郵件支援功能,請叫用 dev_appserver.py,如下所示:

  python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --enable_sendmail=yes PATH_TO_YOUR_APP

取代:

  • DEVAPPSERVER_ROOT,其中包含您解壓縮 devapp_server.py 封存版本的資料夾路徑。
  • PATH_TO_YOUR_APP 替換為應用程式的路徑。

本機伺服器會使用 sendmail 指令,以安裝的預設設定傳送電子郵件訊息。

使用網址擷取服務

應用程式使用 URL Fetch API 發出 HTTP 要求時,本機開發伺服器會直接從您的電腦發出要求。如果您是使用 Proxy 伺服器來存取網站,本機伺服器中的 URL Fetch 行為可能會與實際工作環境 App Engine 不同。

使用 Users 服務

App Engine 提供使用者服務,可簡化應用程式的驗證和授權程序。本機開發伺服器會使用本身的登入和登出頁面模擬 Google 帳戶的行為

在本機開發伺服器執行時,函式會回傳本機伺服器上的 /_ah/login/_ah/logout 網址。

指令列引數

如需本機開發伺服器指令選項,請參閱本機開發伺服器選項