本機開發伺服器選項

本機開發伺服器 (dev_appserver.py) 屬於 gcloud CLI 的 App Engine 元件。本主題提供 dev_appserver.py 使用情況的進階資訊。

建議您使用標準的 Python 工具,例如利用 virtualenv 來建立獨立的環境,並透過 pytest 進行單元測試和整合測試,而不要使用 dev_appserver 提供的本機開發伺服器 Google Cloud SDK

如要進一步瞭解本機測試,請參閱「使用本機開發伺服器」。

設定本機開發伺服器工具

範例 dev_appserver.py 指令可能如下所示:

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py OPTION yaml_path FILES

更改下列內容:

  • CLOUD_SDK_ROOT,並提供您安裝 Google Cloud CLI 的根目錄路徑。預設目錄為 ./google-cloud-sdk/
  • OPTION,並使用當地開發伺服器支援的旗標。
  • FILES 為位置引數 yaml_path 指定一或多個 app.yaml 檔案 (每個服務一個檔案)。

如需完整的選項清單,請執行下列指令:

python3 CLOUD_SDK_ROOT/bin/dev_appserver.py -h

常用選項

最常見的選項如下:

--admin_host=ADMIN_HOST
本機開發伺服器的管理控制台應繫結的主機名稱 (預設:localhost)。
--admin_port=ADMIN_PORT
本機開發伺服器的管理控制台應繫結的通訊埠 (預設:8000)。
--addn_host=ADDN_HOST
:這個引數可讓您將其他 HTTP 主機標頭值加入允許清單,以便在不需停用主機檢查的情況下,透過 Proxy 存取伺服器 (請參閱 --enable_host_checking)。以 *. 開頭的其他主機允許所有子網域。舉例來說,*.example.org 允許 host.example.org,但不允許 sub.host.example.orgexample.org。主機名稱開頭為 **.,允許任何深度的子網域。舉例來說,**.example.com 允許 host.example.comsub.host.example.com,但不允許 example.com。(預設值:[])
--allow_skipped_files=...
使應用程式可以讀取在 app.yaml skip_filesstatic 中指定的檔案 (預設值為 False)。
-A APP_ID, --application=...
設定應用程式,覆寫 app.yaml 檔案中的應用程式值 (預設值:無)。
--appidentity_email_address=...
與可下載金鑰的服務帳戶相關聯的電子郵件地址。 如果沒有本機應用程式 ID,則可能是 None (預設值:None)。
--appidentity_private_key_path=...
與服務帳戶相關聯的私密金鑰檔案路徑 (.pem 格式)。如果已設定 appidentity_email_address,則必須設定此值 (預設值:無)。
--api_host=API_HOST
API 伺服器應繫結的主機名稱 (預設:localhost)。
--api_port=API_PORT
API 呼叫之伺服器應繫結的通訊埠 (預設:0)。
--auth_domain=...
要使用的授權網域名稱 (預設值:gmail.com)。
--auto_id_policy=...
已淘汰。本機資料儲存庫如何指派自動 ID。選項為 sequentialscattered (預設值:scattered)。
--automatic_restart=...
當檔案服務相關的檔案發生變更時,自動重新啟動執行個體 (預設值:True)。
--blobstore_path=...
用於儲存 Blob 內容的目錄路徑 (如未設定,預設為 --storage_path 的子目錄) (預設值:無)。
--clear_datastore=yes|no
啟動網路伺服器之前,請先清除資料儲存庫資料和歷史記錄檔 (預設值:no)。
--clear_search_indexes...
清除搜尋索引 (預設值:False)。
--custom_entrypoint=...

指定自訂執行階段模組的進入點。存在這類模組時,此為必填參數。在字串中納入 {port} (不含引號),將通訊埠編號當成引數傳入 (預設值:)。例如:

--custom_entrypoint="gunicorn -b localhost:{port}
  mymodule:application"
--datastore_consistency_policy {consistent,random,time}

決定 Datastore 寫入作業是否應顯示在全域查詢時套用的政策 (預設為時間)。

--datastore_emulator_cmd=...

這個路徑通往可叫用 Cloud Datastore 模擬器的指令碼,如果留空,dev_appserver 會嘗試在 Google Cloud SDK 中尋找 Datastore 模擬器 (預設值:無)。

--datastore_emulator_port=...

dev_appserver 應啟動 Cloud Datastore 模擬器的通訊埠號碼 (預設值:0)。

--datastore_path=...

本機資料儲存庫資料檔使用的路徑。如果檔案不存在,則伺服器會建立這個檔案。

--default_gcs_bucket_name=...

預設 Cloud Storage 值區名稱 (預設值:無)。

--dev_appserver_log_level {debug,info,warning,critical,error}

記錄開發伺服器所產生記錄訊息的記錄層級將不會顯示在主控台上 (此標記對診斷 dev_appserver.py 中的問題,比對診斷應用程式程式碼中的問題更為實用) (預設值:info)。

--enable_host_checking=yes|no

決定是否強制執行應用程式模組、API 伺服器和管理伺服器的HTTP主機檢查。 主機檢查可防範 DNS 重新繫結攻擊,請先瞭解安全影響再停用 (預設值:True)。

--enable_console=yes|no

在管理員檢視畫面中啟用互動式控制台 (預設值:False)。

--enable_sendmail=yes|no

使用本機電腦安裝的 Sendmail 傳送電子郵件訊息。

--enable_task_running=yes|no

啟用開發伺服器以執行發送工作 (預設值:yes)。 如果您指定 no,伺服器將無法執行發送工作。

--env_var=...

本機執行階段處理程序的使用者定義環境變數。每個 env_var 均採用 key=value 的格式,您可以定義多個環境變數。除了 app.yaml 中的 env_variables 外,您也可以使用這個標記設定本機處理程序的其他環境變數。

例如:--env_var KEY_1=val1 --env_var KEY_2=val2

--grpc_api_port...

gRPC API 伺服器監聽的通訊埠 (預設值:0)。

--help

顯示實用訊息後退出。

--host=...

伺服器使用的主機位址。需設定此位址才能使用網路上的其他電腦存取開發伺服器。若將位址設為 0.0.0.0,就能同時進行 localhost 存取和 IP 或主機的名稱存取 (預設值:localhost)。

--log_level=...

將記錄訊息寫入主控台的最低記錄層級;將輸出指定登入層級或更高層級的訊息。 可能的值為 debuginfowarningerrorcritical

--logs_path=...

根據預設,本機開發伺服器的記錄只會儲存在記憶體中。執行本機開發伺服器時,指定此選項可將記錄另存成檔案,即使伺服器重新啟動後,仍然可以使用該記錄。您必須指定 SQLite 資料庫檔案的目錄路徑和名稱。建立 SQLite 資料庫檔案時,若資料庫檔案尚不存在,會以指定的名稱建立該檔案。

例如:--logs_path=/home/logs/boglogs.db

--max_module_instances=...

可以針對特定模組啟動的執行階段執行個體數量上限。此值可以是整數,在此情況下,所有模組都受限於該執行個體數量或 module:max_instances 的逗號分隔清單 (預設值:無)。例如:default:5,backend:3

--mysql_host=MYSQL_HOST

用於模擬 Cloud SQL 儲存空間的執行中 MySQL 伺服器主機名稱 (預設值:localhost)。

--mysql_port=MYSQL_PORT

用於模擬 Cloud SQL 儲存空間的執行中 MySQL 伺服器連接埠號碼 (預設值:3306)。

--mysql_user=MYSQL_USER

連線至 --mysql_host--mysql_port--mysql_socket 中指定的 MySQL 伺服器時要使用的使用者名稱 (預設值:)。

--mysql_password=MYSQL_PASSWORD

連線至 --mysql_host--mysql_port--mysql_socket 中指定的 MySQL 伺服器時要使用的密碼 (預設值:)。

--mysql_socket=MYSQL_SOCKET

連線至用於模擬 Cloud SQL 儲存空間的執行中 MySQL 伺服器時,要使用的 Unix 通訊端檔案路徑 (預設值:None)。

--port=...

伺服器使用的連接埠號碼,預設為 8080 步。若啟動多個伺服器 (例如用於服務),會將後續連接埠指派給這些伺服器,例如 80818082

--require_indexes=yes|no

會停用在 index.yaml 檔案中自動產生項目的功能。當應用程式發出要求在檔案中定義其索引的查詢,但卻找不到索引定義時,會引發例外狀況。這種情況與在 App Engine 上執行時可能會發生的情況相似 (預設值:no)。

--runtime=...

指定您要使用的預設執行階段。如需支援的執行階段清單,請參閱「執行階段支援時間表」。

--running_datastore_emulator_host=...

覆寫環境變數 DATASTORE_EMULATOR_HOST,也就是 hostname:port可連線的執行中 Cloud Datastore 模擬器 dev_appserver (預設值:無)。

--search_indexes_path=...

用於儲存搜尋索引的檔案路徑 (如未設定,預設為 --storage_path 中的檔案) (預設值:None)。

--skip_sdk_update_check=...

略過檢查 SDK 更新 (如果為 false,請使用 .appcfg_nag 決定) (預設值:False)。

--show_mail_body=...

記錄使用 Mail API 傳送的電子郵件內容 (預設值:False)。

--smtp_allow_tls...

SMTP 伺服器宣告支援 TLS 時,允許使用 TLS (如果未設定 --smtp_host,則會忽略這項設定) (預設值:True)。

--smtp_host=...

傳送電子郵件訊息時所用的 SMTP 伺服器主機名稱。

--smtp_port=...

傳送電子郵件訊息時所用的 SMTP 伺服器連接埠號碼。

--smtp_user=...

傳送電子郵件訊息時所用的 SMTP 伺服器使用者名稱。

--smtp_password=...

傳送電子郵件訊息時所用的 SMTP 伺服器密碼。

--storage_path=...

除非以 --datastore_path--blobstore_path--logs_path 覆寫,否則會儲存所有本機檔案 (例如 Datastore、Blobstore、Cloud Storage 檔案和記錄) 的路徑。

--support_datastore_emulator=yes|no

使用 Cloud Datastore 模擬器 (測試版) 模擬本機資料儲存庫。

--ssl_certificate_path=...

SSL 憑證的路徑。使用這個選項時,也必須提供 --ssl_certificate_key_path (預設值:無)。

--ssl_certificate_key_path=...

對應 SSL 私密金鑰的路徑。使用這個選項時,也必須提供 --ssl_certificate_path (預設值:無)。

--threadsafe_override=...

覆寫應用程式的執行緒安全設定。此值可以是布林值,在此情況下,所有模組的執行緒安全設定都將遭到覆寫,或為 module:threadsafe_override 的逗號分隔清單 (預設值:無)。

例如:default:False,backend:True

--use_mtime_file_watcher=...

使用 mtime 輪詢作業來偵測原始碼變更。如果使用分散式檔案系統從遠端電腦修改程式碼,則會很實用 (預設值:False)。

--watcher_ignore_re=...

用來指定檔案監控器要忽略的檔案。(預設值:無)

Python 執行階段專屬的指令選項:

--python_startup_script
啟動新 Python 執行階段執行個體時執行的指令碼 (對於偵錯工具這類的工具而言相當實用) (預設值:None)。
--python_startup_args
python_startup_script 中指定的指令碼可以使用的引數 (預設值:無)。
--python27_executable_path=...
python27 執行階段例項的 python27 可執行檔路徑 (預設值:None)。
--python_virtualenv_path
這個目錄的路徑用於設定 Python 3 虛擬環境,以供 Python 3 應用程式的本機 devappserver 執行環境使用。如果路徑不存在,系統會建立目錄,但不會在 devappserver 執行完畢時清除,因此可在呼叫之間進行快取。如未定義,系統會使用臨時目錄,並在執行結束時清理。
--runtime_python_path=...
Python 二進位檔的路徑。如要在 dev_appserver 上執行 Python 應用程式,請指定這個標記。