使用本機開發伺服器

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

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

設定本機開發伺服器

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

  1. 確認您已安裝與 gcloud CLI 要求的 Python 版本相容的 Python 3 解譯器。
  2. 確認您已安裝 Google Cloud CLI 元件,其中包含 Python 3 專用的 App Engine 擴充功能 (app-engine-python):

    gcloud components list
    

    如果未安裝 app-engine-python 元件,請執行下列指令:

    gcloud components install app-engine-python
    
  3. 執行下列指令,找出 Google Cloud SDK 的安裝路徑:

    gcloud info
    

    這項指令會傳回您安裝 Google Cloud SDK 的根目錄,例如:

    Installation Root: [/Users/myname/google-cloud-sdk]

  4. 在安裝 Google Cloud CLI 的 /bin/ 資料夾中找出 dev_appserver.py 工具,例如:

    CLOUD_SDK_ROOT/bin/dev_appserver.py
    
  5. 請記下 dev_appserver.py 的路徑,稍後會用到。

執行本機開發伺服器

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

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

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

    dev_appserver.py

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

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py PATH_TO_YOUR_APP
    

    或者,您也可以指定特定服務的設定檔,例如:

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py app.yaml
    

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

    python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --port=9999 PATH_TO_YOUR_APP
    

    goapp serve

    goapp serve 指令包含在原始的 Go 專用 App Engine SDK 中,並包裝了底層的 dev_appserver.py Python 工具。如要啟動本機開發伺服器,請執行下列指令:

       goapp serve
    

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

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

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

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

指定應用程式 ID

如想透過本機伺服器查看應用程式 ID,例如假冒電子郵件地址,請使用 appengine.AppID 函式。

如要取得運作中應用程式的主機名稱,請使用 appengine.DefaultVersionHostname 函式。

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

如要判定您的程式碼是在實際工作環境還是本機開發伺服器中執行,您可以呼叫 IsDevAppServer() 方法。如果這個值為 true,表示程式碼是在本機開發環境中執行;否則是在實際工作環境中執行。

如需範例,請參閱 GitHub

使用本機 Datastore 服務

本機開發伺服器會使用在本機伺服器叫用之間持續存在的本機檔案來模擬 App Engine Datastore。

如要進一步瞭解索引與 index.yaml,請參閱 Datastore 索引頁面。

瀏覽本機 Datastore

如果應用程式透過本機開發伺服器將資料寫入本機 Datastore,您可以在本機開發控制台瀏覽這些內容。

如要瀏覽本機 Datastore:

  1. 啟動開發伺服器

  2. 在本機開發控制台中存取 Datastore 檢視器 網址為 http://localhost:8000/datastore

  3. 檢視本機 Datastore 內容。

指定 ID 分配政策

如果是正式版 App Engine,您可以將 Datastore 設為自動產生實體 ID

雖然實際工作環境伺服器的自動 ID 指派政策與開發伺服器採用的政策截然不同,您也可以為本機伺服器設定自動 ID 分配政策。

如要指定自動 ID 指派政策,請使用 --auto_id_policy 選項:

  python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --auto_id_policy=sequential

其中 --auto_id_policy 可以是下列任一值:

  • scattered:(預設) 從大致平均分佈且不重複的整數序列指派 ID。
  • sequential:從連續的整數序列指派 ID。

清除本機 Datastore

如要清除應用程式的本機 Datastore,請按照下列方式叫用本機開發伺服器:

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --clear_datastore=yes app.yaml

變更本機 Datastore 位置

如要變更 Datastore 檔案使用的位置,請使用 --datastore_path 選項:

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py --datastore_path=/tmp/myapp_datastore app.yaml

使用郵件服務

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

使用 SMTP

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

python3 [CLOUD_SDK_ROOT]/bin/dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
    --smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]

其中,--smtp_host--smtp_port--smtp_user--smtp_password 選項必須設定為您所要的值。

使用 Sendmail

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

python3 [CLOUD_SDK_ROOT]/bin/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

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

使用網址擷取服務

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

使用 Users 服務

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

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

指令列引數

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