使用本地开发服务器

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. 验证您是否已安装包含 Python 3 版 App Engine 扩展程序 的 Google Cloud CLI 组件 (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 命令。

    指定应用的目录路径,例如:

       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]
    

  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

使用 Mail 服务

借助 SMTP 服务器或本地安装的 Sendmail,本地开发服务器可以在收到 App Engine Mail 服务调用时发送电子邮件。

使用 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 服务

如果您的应用使用 URL Fetch API 发出 HTTP 请求,本地开发服务器会直接从您的计算机中发出该请求。如果您使用代理服务器访问网站,则本地服务器上的 URL Fetch 行为可能与 App Engine 生产环境中的行为不同。

使用 Users 服务

App Engine 提供 Users 服务来简化应用的身份验证和授权。本地开发服务器使用自己的账号登录和退出页面模拟 Google 账号的行为

在本地开发服务器上运行时,函数会返回本地服务器上 /_ah/login/_ah/logout 的网址。

命令行参数

如需了解本地开发服务器命令选项,请参阅本地开发服务器选项