本教程介绍如何使用 Google Cloud Console 在 Python 书架应用中报告和跟踪未捕获的异常。
Error Reporting 提供了一个集中式的信息中心,显示每个唯一错误的计数,堆栈轨迹和发生的历史记录。您还可以设置出现错误时的提醒。
本教程由多个页面组成,本页面是其中之一。要从头开始阅读并查看设置说明,请参阅 Python Bookshelf 应用。
配置设置
本部分使用 5-logging
目录中的代码。修改文件并在此目录中运行命令。
-
打开要修改的
config.py
文件并替换以下值: -
将
[PROJECT_ID]
的值设置为您的项目 ID,您可以在 Cloud Console 中查看项目 ID。 -
将
[DATA_BACKEND]
的值设置为您在使用结构化数据教程中使用的值。 -
如果您使用的是 Cloud SQL 或 MongoDB,请将
Cloud SQL
或Mongo
部分下的值设置为您在使用结构化数据步骤中使用的值。 -
将
[CLOUD_STORAGE_BUCKET]
的值设置为您的 Cloud Storage 存储分区的名称。 -
在
OAuth2 configuration
部分下,将[GOOGLE_OAUTH2_CLIENT_ID]
和[GOOGLE_OAUTH2_CLIENT_SECRET]
的值设置为您之前创建的应用客户端 ID 和密钥。 -
保存并关闭
config.py
文件。
如果您使用的是 Cloud SQL:
-
打开要修改的
app.yaml
文件。 -
将
cloudsql-instance
的值设置为与config.py
文件中的[CLOUDSQL_CONNECTION_NAME]
所使用的值。请使用格式project:region:cloudsql-instance
。取消对这一整行的注释。 -
保存并关闭
app.yaml
文件。
安装依赖项
要创建虚拟环境并安装依赖项,请使用以下命令:
Linux/macOS
virtualenv -p python3 env
source env/bin/activate
pip install -r requirements.txt
Windows
virtualenv -p python3 env
env\scripts\activate
pip install -r requirements.txt
在本地机器上运行应用
启动本地网络服务器:
python main.py
在浏览器中,输入以下地址:
http://localhost:8080
按 Control + C 退出工作器,然后退出本地 Web 服务器。
将应用部署到 App Engine 柔性环境
部署示例应用:
gcloud app deploy
在浏览器中,输入以下网址:
https://PROJECT_ID.REGION_ID.r.appspot.com
替换以下内容:
PROJECT_ID
:您的 Google Cloud 项目 IDREGION_ID
:App Engine 分配给您的应用的代码
如果您要更新应用,则只需输入您在部署应用时使用的命令,即可部署更新后的版本。该部署会创建应用的新版本并将其提升为默认版本。应用的旧版本仍会保留,与其关联的虚拟机 (VM) 实例也是一样。所有这些应用版本和虚拟机实例都属于可计费资源。要减少费用,请删除应用的非默认版本。
要删除应用版本,请执行以下操作:
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- 如需删除应用版本,请点击 删除。
如需详细了解如何清理可计费资源,请参阅本教程最后一步中的清理部分。
模拟错误
如需查看 Error Reporting 的实际应用,请刻意在代码中引入错误,然后在 Cloud Console 的 Error Reporting 页面中查找异常。
在
bookshelf/crud.py
中,添加一个访问未定义变量的操作,并在索引视图中生成一个ReferenceError
。@crud.route("/") def list(): x[3]
部署应用。
gcloud app deploy
访问索引页面。
gcloud app browse
您可以查看
An internal error occurred
消息。在 Cloud Console 中,转到 Stackdriver Error Reporting 页面。
您会看到列出的错误。
点击相应错误以查看有关错误的信息,例如错误上次出现时间、错误发生次数、发生次数直方图以及堆栈轨迹。
了解代码
为了报告未捕获的异常,该代码首先使用 Flask errorhandler
修饰器,然后使用 Python 版 Cloud 客户端库向 Error Reporting 报告异常。
客户端自动添加回溯信息,并使用辅助函数从 Flask 请求中提取相关的请求的详细信息,以便在 Error Reporting 中填充应用中任何未捕获的 InternalServerError
HTTP 500
异常的相关堆栈跟踪和 HTTP 上下文。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 帐号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
若要避免产生费用,最简单的方法是删除您为本教程创建的项目。
要删除项目,请执行以下操作:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.