实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

Pub/Sub:Qwik Start - Python

实验 30 分钟 universal_currency_alt 1 个点数 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP094

Google Cloud 自学实验的徽标

概览

利用 Pub/Sub 服务,应用能够可靠、快速地异步交换消息。为实现这一目标,数据生产者需要将消息发布到 Cloud Pub/Sub 主题。然后,订阅方客户端会创建对该主题的订阅,并处理来自该订阅的消息。对于无法可靠地传送的消息,Cloud Pub/Sub 最多会将其保留七天。

在本实验中,您将学习如何开始使用 Python 客户端库通过 Pub/Sub 发布消息。

您将执行的操作

在本实验中,您需要执行以下操作:

  • 了解 Pub/Sub 的基础知识
  • 创建、删除和列出 Pub/Sub 主题和订阅
  • 向主题发布消息。
  • 使用拉取订阅方输出单独的主题消息。

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

任务 1. 创建虚拟环境

Python 虚拟环境用于将软件包安装与系统隔离开来。

  1. 安装 virtualenv 环境:
sudo apt-get install -y virtualenv
  1. 构建虚拟环境:
python3 -m venv venv
  1. 激活此虚拟环境:
source venv/bin/activate

任务 2. 安装客户端库

  1. 运行以下命令安装客户端库:
pip install --upgrade google-cloud-pubsub
  1. 克隆 GitHub 代码库以获取示例代码:
git clone https://github.com/googleapis/python-pubsub.git
  1. 进入该目录:
cd python-pubsub/samples/snippets

任务 3. Pub/Sub - 基础知识

Pub/Sub 是一种全球异步通讯服务。Pub/Sub 中常见的三个术语是“主题”“发布”和“订阅”。

主题是一个共享字符串,可让应用通过普通会话与其他应用联系。

发布方向 Pub/Sub 主题推送(或发布)消息。然后,订阅方会针对该会话创建订阅,并从主题中拉取消息或为推送订阅配置 webhook。每个订阅方都必须在可配置的时间范围内确认每条消息。

总而言之,发布方创建主题并向主题发送消息,订阅方则创建对主题的订阅以接收来自该主题的消息。

Google Cloud 中的 Pub/Sub

Pub/Sub 已预安装在 Cloud Shell 中,因此您无需安装或配置即可开始使用此服务。在本实验中,您将使用 Python 创建主题、订阅方,然后查看相应消息。您可以使用 gcloud 命令行将消息发布到主题。

任务 4. 创建主题

要向 Pub/Sub 发布数据,您需要创建一个主题,然后为该主题配置一个发布方。

  1. 在 Cloud Shell 中,您的项目 ID 应该会自动存储在环境变量 GOOGLE_CLOUD_PROJECT 中:
echo $GOOGLE_CLOUD_PROJECT
  1. 请确保输出与连接详情中的项目 ID 一致。

publisher.py 是一个脚本,可展示如何使用 Cloud Pub/Sub API 对主题执行基本操作。查看发布方脚本的内容:

cat publisher.py 注意:您也可以使用 Cloud Shell 中已安装的 shell 编辑器(例如 nano 或 vim),或者使用 Cloud Shell 代码编辑器来查看 python-pubsub/samples/snippets/publisher.py
  1. 发布方脚本的信息:
python publisher.py -h

输出示例:

usage: publisher.py [-h] project {list,create,delete,publish,publish-with-custom-attributes,publish-with-futures,publish-with-error-handler,publish-with-batch-settings} ... This application demonstrates how to perform basic operations on topics with the Cloud Pub/Sub API. For more information, see the README.md under /pubsub and the documentation at https://cloud.google.com/pubsub/docs. positional arguments: project Your Google Cloud project ID {list,create,delete,publish,publish-with-custom-attributes,publish-with-futures,publish-with-error-handler,publish-with-batch-settings} list Lists all Pub/Sub topics in the given project. create Create a new Pub/Sub topic. delete Deletes an existing Pub/Sub topic. publish Publishes multiple messages to a Pub/Sub topic. publish-with-custom-attributes Publishes multiple messages with custom attributes to a Pub/Sub topic. publish-with-futures Publishes multiple messages to a Pub/Sub topic and prints their message IDs. publish-with-error-handler Publishes multiple messages to a Pub/Sub topic with an error handler. publish-with-batch-settings Publishes multiple messages to a Pub/Sub topic with batch settings. optional arguments: -h, --help show this help message and exit
  1. 运行以下发布方脚本创建 Pub/Sub 主题:
python publisher.py $GOOGLE_CLOUD_PROJECT create MyTopic

输出示例:

Topic created: name: "projects/qwiklabs-gcp-fe27729bc161fb22/topics/MyTopic"

测试已完成的任务

点击检查我的进度可验证您已完成的任务。如果您成功创建了一个 Cloud Pub/Sub 主题,就会看到一个评估分数。

创建主题。
  1. 以下命令会返回指定项目中所有 Pub/Sub 主题的列表:
python publisher.py $GOOGLE_CLOUD_PROJECT list

输出示例:

name: "projects/qwiklabs-gcp-fe27729bc161fb22/topics/MyTopic"

您也可以在 Cloud 控制台中查看您刚刚创建的主题。

  1. 前往导航菜单 > Pub/Sub > 主题

您应该会看到 MyTopic

任务 5. 创建订阅

  1. 使用 subscriber.py 脚本为主题创建 Pub/Sub 订阅:
python subscriber.py $GOOGLE_CLOUD_PROJECT create MyTopic MySub

测试已完成的任务

点击检查我的进度可验证您已完成的任务。如果您成功创建了 Cloud Pub/Sub 订阅,就会看到一个评估分数。

创建订阅。
  1. 以下命令会返回指定项目中订阅方的列表:
python subscriber.py $GOOGLE_CLOUD_PROJECT list-in-project

您只会看到一个订阅,因为您只创建了一个。

输出示例:

projects/qwiklabs-gcp-7877af129f04d8b3/subscriptions/MySub
  1. 在控制台中查看您刚刚创建的订阅。在左侧窗格中,点击订阅。您应该会看到订阅名称和其他详情。

  2. 关于 subscriber 脚本的信息:

python subscriber.py -h

输出

usage: subscriber.py [-h] project {list_in_topic,list_in_project,create,create-push,delete,update,receive,receive-custom-attributes,receive-flow-control,receive-synchronously,listen_for_errors} ... This application demonstrates how to perform basic operations on subscriptions with the Cloud Pub/Sub API. For more information, see the README.md under /pubsub and the documentation at https://cloud.google.com/pubsub/docs. positional arguments: project Your Google Cloud project ID {list_in_topic,list_in_project,create,create-push,delete,update,receive,receive-custom-attributes,receive-flow-control,receive-synchronously,listen_for_errors} list_in_topic Lists all subscriptions for a given topic. list_in_project Lists all subscriptions in the current project. create Create a new pull subscription on the given topic. create-push Create a new push subscription on the given topic. delete Deletes an existing Pub/Sub topic. update Updates an existing Pub/Sub subscription's push endpoint URL. Note that certain properties of a subscription, such as its topic, are not modifiable. receive Receives messages from a pull subscription. receive-custom-attributes Receives messages from a pull subscription. receive-flow-control Receives messages from a pull subscription with flow control. receive-synchronously Pulling messages synchronously. listen_for_errors Receives messages and catches errors from a pull subscription. optional arguments: -h, --help show this help message and exit

任务 6. 发布消息

现在,您已设置了 MyTopic(主题)、创建了对 MyTopic 的订阅 (MySub),请尝试使用 gcloud 命令向 MyTopic 发布消息。

  1. MyTopic 发布消息“Hello”:
gcloud pubsub topics publish MyTopic --message "Hello"
  1. MyTopic 再发送一些消息 - 运行以下命令(使用您的姓名和喜欢的食物替换 <> 中的内容):
gcloud pubsub topics publish MyTopic --message "Publisher's name is <您的姓名>" gcloud pubsub topics publish MyTopic --message "Publisher likes to eat <食物>" gcloud pubsub topics publish MyTopic --message "Publisher thinks Pub/Sub is awesome"

任务 7. 查看邮件

现在,您已向 MyTopic 发送了多条消息,请使用 Mysub 拉取和查看这些消息。

  1. 使用 MySub 从 MyTopic 中拉取消息:
python subscriber.py $GOOGLE_CLOUD_PROJECT receive MySub

输出示例:

Listening for messages on projects/qwiklabs-gcp-7877af129f04d8b3/subscriptions/MySub Received message: Message { data: 'Publisher thinks Pub/Sub is awesome' attributes: {} } Received message: Message { data: 'Hello' attributes: {} } Received message: Message { data: "Publisher's name is Harry" attributes: {} } Received message: Message { data: 'Publisher likes to eat cheese' attributes: {} }
  1. Ctrl + c 以停止监听。

任务 8. 检验您的掌握情况

我们在下方准备了一些单选题,以加强您对本实验所涉概念的理解。请尽您所能回答。

恭喜!

您使用 Python 创建了一个 Pub/Sub 主题,向该主题发布了数据,还创建了一个订阅并用它从该主题拉取了数据。

后续步骤/了解详情

Pub/Sub Lite 作为 Pub/Sub 的补充,是适用于具有可预测流量模式的通讯系统的可用区级服务。如果您每秒发布 1 MiB 至 1 GiB 消息,则 Pub/Sub Lite 是适合提取大量事件的费用最低的一种方案。通过以下实验体验 Pub/Sub Lite:

本实验是 Qwik Starts 系列实验的其中一项。通过这些实验,您可以一窥 Google Cloud 的各项功能。请在 Google Cloud Skills Boost 目录中搜索“Qwik Starts”,找到您要参与的下一项实验!

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 2 月 13 日

上次测试实验的时间:2023 年 9 月 22 日

版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。