App Engine 使用快速入门

本快速入门为您介绍 Error Reporting,并向您演示如何执行以下操作:

  • 使用 Cloud Shell 部署 Python App Engine 应用。
  • 使用 Error Reporting 查看应用中的错误。
  • 配置 Error Reporting 以发送通知。

在 Google Cloud Console 中试用 3 分钟交互式教程
(点击 Error Reporting 中简介列中的开始。)

准备工作

  1. 登录您的 Google 帐号。

    如果您还没有 Google 帐号,请注册一个新帐号

  2. 在 Cloud Console 的项目选择器页面上,选择或创建 Cloud 项目。

    转到项目选择器页面

  3. 确保您的 Google Cloud 项目已启用结算功能。 了解如何确认您的项目已启用结算功能

  4. 为您的项目打开 Cloud Shell。在其启动时,系统会显示正在连接消息。

    打开 Cloud Shell。

开始

在本节中,您将下载应用并将其部署到 App Engine:

  1. 从 GitHub 项目 python-docs-samples 下载并配置应用:

    1. 将项目克隆到您的 Cloud Shell:

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      

      Git 将返回类似于以下内容的消息:

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      Cloning into 'python-docs-samples'...
      
    2. 创建一个独立的 Python 环境并将其激活:

      cd python-docs-samples/appengine/standard_python3/hello_world
      virtualenv env -p python3
      source env/bin/activate
      
    3. 安装依赖项:

      pip install -r requirements.txt
      
  2. 验证应用安装和配置是否成功:

    1. 运行应用:

      python main.py
      
    2. 要在本地网页上查看应用,请点击 Cloud Shell 中显示的链接。该网页会显示 Hello World!

    3. 要停止正在运行的应用,请在 Cloud Shell 中输入 Ctrl-C

  3. 将您的应用上传到 App Engine:

    gcloud app deploy
    

    如果系统提示您选择部署区域,请选择您附近的区域。当系统询问您是否要继续时,请输入 Y。 片刻之后,上传就会完成。

  4. 通过在 Cloud Shell 中运行以下命令,以在浏览器中查看您的应用:

    gcloud app browse
    

    如果 Cloud SDK 找不到您的浏览器,则上一个命令会显示错误消息和链接。点击显示的链接。此时浏览器中会显示消息 Hello, World!

引入错误

在接下来的步骤中,您将创建 Error Reporting 捕获并显示的错误:

  1. 修改 main.py,将

    return 'Hello World!
    

    return 'Hello World!' + 1000
    

    执行时,此更改会导致 Python TypeError 异常,因为连接字符串和整数是非法的。

  2. 将修改后的应用上传到 App Engine:

    gcloud app deploy
    
  3. 返回到包含正在运行的应用的浏览器标签页,然后重新加载此页面。由于您的更改,此时会出现一条错误消息,而不是显示 Hello, World! 的页面:

    Internal Server Error
    The server encountered an internal error and was unable to complete your
    request. Either the server is overloaded or there is an error in the
    application.
    

    如果您没有看到此消息,请稍等片刻,然后重新加载。新版本激活可能需要一些时间。

查看 Error Reporting 中的错误

网页中显示的错误消息并不实用,因为该消息没有提供足够的详细信息来解决问题。但是,如果使用 Error Reporting,则可以获取有关错误及其发生次数的详细信息:

  1. 转至 Error Reporting:

    转至 Error Reporting

    Error Reporting 信息中心会显示找到的每个错误及其发生次数的摘要。 默认情况下,Error Reporting 每 5 秒自动重新加载一次错误列表,但是若要强制立即重新加载,请点击自动重新加载

    在本快速入门中,信息中心会显示一条错误,其相应的说明内容为 "TypeError: can only concatenate str (not "int") to str"。 您可能需要稍等片刻并刷新页面才能看到错误:

    显示测试错误的界面。

  2. 通过在浏览器中重新加载应用,再次生成相同的错误。

    由于新错误的堆栈轨迹与第一个错误类似,因此 Error Reporting 会通过更新发生次数和时间图表来对这些错误进行批处理:

    显示批量发生的测试错误的界面。

  3. 要查看包含有关错误的所有可用信息(包括源代码的链接)的错误详情页面,请点击错误名称:

    显示测试错误详情页面的界面。

配置通知

您可以配置 Error Reporting,以便在出现新类型的错误时收到通知。当现有错误再次出现时,系统不会发送通知:

  1. 转至 Error Reporting:

    转至 Error Reporting

  2. 要启用电子邮件通知,请点击更多 ,然后从下拉列表中选择为项目开启新错误通知

  3. main.py 中,将

    return 'Hello World!` + 1000
    

    return 'Hello World!'.punctuate()
    

    执行时,此更改时会导致 Python AttributeError 异常,因为属性 punctuate() 不存在。

  4. 将修改后的文件上传到 App Engine:

    gcloud app deploy
    
  5. 通过在浏览器中重新加载应用来生成新错误。

    • 浏览器会显示消息 Internal Server Error

    • Error Reporting 信息中心会显示一条错误,其相应的说明内容为 "AttributeError: 'str' object has no attribute 'punctuate'

    • 您的电子邮件中新增了一则通知,该通知中包含错误的详细信息以及以下信息:

      • 项目 ID
      • 一条错误说明,在本例中,其内容包含 "AttributeError: 'str' object has no attribute 'punctuate'
      • 服务
      • 应用版本

清理

为避免系统因本快速入门中使用的资源向您的 Google Cloud 帐号收取费用,请按照以下步骤操作。

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”页面

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

后续步骤