在运行时达到支持终止期限后使用本地开发服务器

对于已达到支持终止期限的运行时,您无法再使用最新版本的 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 服务器所在的压缩文件夹。

  2. 将目录的内容解压缩到本地文件系统,例如解压缩到 /home 目录。您可以在 google_appengine/ 目录中找到 dev_appserver.py

设置本地开发服务器

如需运行本地开发服务器工具,您必须设置以下各项:

  1. 验证您是否安装了 2.7.12 或更高版本的 Python 2 解释器。

  2. 将 shell 中的 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

使用 Mail 服务

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

如需使用 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 实现邮件支持,请按如下方式调用 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 服务

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

使用 Users 服务

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

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

命令行参数

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