许多应用需要处理身份验证和用户偏好设置的会话。Flask 框架附带一个基于内存的实现,可执行此功能。但此实现不适用于可以通过多个实例提供的应用,因为各实例之间记录的会话可能不同。本教程介绍如何在 App Engine 上处理会话。
目标
- 编写应用。
- 在本地运行应用。
- 在 App Engine 上部署应用。
费用
在本文档中,您将使用的以下收费组件: Cloud de Confiance by S3NS
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Firestore API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
安装 Google Cloud CLI。
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
在系统上安装 Python、
pip和virtualenv。如需查看说明,请参阅 为设置 Python 开发环境 。 Cloud de Confiance by S3NS
设置项目
在终端窗口中,从您选择的目录启动,并创建一个名为
sessions的新目录。本教程的所有代码均位于sessions目录内。切换到
sessions目录:cd sessions请使用以下内容创建
requirements.txt:安装依赖项:
pip install -r requirements.txt
在本教程结束时,最终文件结构类似于以下内容:
sessions
├── app.yaml
├── main.py
└── requirements.txt
编写 Web 应用
此应用为每位用户显示不同语言的问候语。回访用户始终会收到同一种语言的问候语。

在应用存储用户偏好设置之前,您需要存储会话中当前用户的相关信息。此示例应用使用 Cookie 和 Firestore 来存储会话数据。
在终端窗口中,使用以下内容创建名为
main.py的文件:下图说明了 Firestore 如何处理 App Engine 应用的会话。
删除会话
您可以删除会话数据 或实施自动删除策略。如果您为会话使用 Memcache 或 Redis 等存储解决方案,系统会自动删除已过期的会话。
在本地运行
在您的终端窗口中,安装 Gunicorn HTTP 服务器:
pip install gunicorn运行 Gunicorn HTTP 服务器:
gunicorn -b :8080 main:app在网络浏览器中查看应用:
Cloud Shell
在 Cloud Shell 工具栏中,点击 Web 预览
,然后选择在端口 8080 上预览。本地机器
在浏览器中,转到
http://localhost:8080您会看到五个问候语之一:“Hello World”、“Hallo Welt”、“Hola mundo”、“Salut le Monde”或“Ciao Mondo”。如果您使用其他浏览器或无痕模式打开网页,语言会更改。您可以在Cloud de Confiance 控制台中查看和修改会话数据。

要停止 HTTP 服务器,请在终端窗口中按
Control+C。
在 App Engine 上部署并运行
通过 App Engine 标准环境 ,您可以构建和部署在繁重负载和大量 数据的压力下仍能可靠运行的应用。
本教程使用 App Engine 标准环境来部署服务器。
在您的终端窗口中,创建一个
app.yaml文件并复制以下内容:在 App Engine 上部署应用:
gcloud app deploy访问
https://your-project-id.appspot.com以查看实时应用:gcloud app browse其中,your-project-id 是您的 Cloud de Confiance 项目 ID。
现在,问候语由在 App Engine 实例上运行的 Web 服务器提供。
调试应用
如果您无法连接到 App Engine 应用,请检查以下内容:
- 检查
gcloud部署命令是否已成功完成,并且未输出任何错误。如果存在错误(例如message=Build failed),修复问题,然后再次尝试 部署 App Engine 应用。 在 Cloud de Confiance 控制台中,前往 Logs Explorer 页面。
在最近选择的资源 下拉列表中,点击 App Engine 应用 ,然后点击 所有 module_id 。您将看到访问您的应用时的请求列表,如果您未发现请求列表,请确认您是否已从下拉列表中选择所有 module_id 。 如果您发现控制台出现错误消息,请检查应用代码是否与 “编写 Web 应用”相关部分中的代码匹配。 Cloud de Confiance
确保已启用 Firestore API。
清理
删除项目
- 在 Cloud de Confiance 控制台中,前往 管理资源 页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击 关闭以删除项目。
删除 App Engine 实例
- 在 Cloud de Confiance 控制台中,前往 App Engine 的 版本 页面。
- 选中要删除的非默认应用版本对应的复选框。
- 如需删除应用版本, 请点击 删除。
后续步骤
- 试用其他 Cloud Run 函数教程。
- 详细了解 App Engine。
- 试用 Cloud Run,该平台可让您在完全托管式环境或您的自定义 Google Kubernetes Engine 集群中运行无状态容器。