跳转到主要内容

Google Cloud Pub/Sub API客户端库

项目描述

GA pypi versions

Google Cloud Pub / Sub 是一个完全托管的实时消息服务,允许您在独立应用程序之间发送和接收消息。您可以利用Cloud Pub/Sub的灵活性来解耦托管在Google Cloud Platform或互联网其他地方的系统和组件。通过建立在Google使用的相同技术上,Cloud Pub / Sub旨在以低延迟提供“至少一次”的交付,并具有按需可扩展性,达到每秒100万条消息(及更高)。

发布者应用程序可以向主题发送消息,其他应用程序可以订阅该主题以接收消息。通过解耦发送者和接收者,Google Cloud Pub/Sub允许开发者在独立编写的应用程序之间进行通信。

快速入门

为了使用此库,您首先需要完成以下步骤

  1. 选择或创建一个云平台项目。

  2. 启用您项目的计费功能。

  3. 启用Google Cloud Pub / Sub API。

  4. 设置身份验证。

安装

使用pip在virtualenv中安装此库。virtualenv是一个创建隔离Python环境的工具。它解决的基本问题是依赖性和版本问题,间接包括权限问题。

使用virtualenv,可以在无需系统安装权限且不与已安装的系统依赖冲突的情况下安装此库。

支持的Python版本

Python >= 3.7

弃用的Python版本

Python <= 3.6。

此库与Python 2.7兼容的最后一个版本是google-cloud-pubsub==1.7.0。

Mac/Linux

pip install virtualenv
virtualenv <your-env>
source <your-env>/bin/activate
<your-env>/bin/pip install google-cloud-pubsub

Windows

pip install virtualenv
virtualenv <your-env>
<your-env>\Scripts\activate
<your-env>\Scripts\pip.exe install google-cloud-pubsub

示例用法

发布

要将数据发布到Cloud Pub/Sub,您必须创建一个主题,然后向其发布消息。

import os
from google.cloud import pubsub_v1

publisher = pubsub_v1.PublisherClient()
topic_name = 'projects/{project_id}/topics/{topic}'.format(
    project_id=os.getenv('GOOGLE_CLOUD_PROJECT'),
    topic='MY_TOPIC_NAME',  # Set this to something appropriate.
)
publisher.create_topic(name=topic_name)
future = publisher.publish(topic_name, b'My first message!', spam='eggs')
future.result()

要了解更多信息,请参阅发布文档

订阅

要订阅Cloud Pub/Sub中的数据,您可以根据主题创建一个订阅,并订阅它,传递一个回调函数。

import os
from google.cloud import pubsub_v1

topic_name = 'projects/{project_id}/topics/{topic}'.format(
    project_id=os.getenv('GOOGLE_CLOUD_PROJECT'),
    topic='MY_TOPIC_NAME',  # Set this to something appropriate.
)

subscription_name = 'projects/{project_id}/subscriptions/{sub}'.format(
    project_id=os.getenv('GOOGLE_CLOUD_PROJECT'),
    sub='MY_SUBSCRIPTION_NAME',  # Set this to something appropriate.
)

def callback(message):
    print(message.data)
    message.ack()

with pubsub_v1.SubscriberClient() as subscriber:
    subscriber.create_subscription(
        name=subscription_name, topic=topic_name)
    future = subscriber.subscribe(subscription_name, callback)

subscriber.subscribe调用返回的future可以用作阻塞当前线程,直到给定条件成立。

try:
    future.result()
except KeyboardInterrupt:
    future.cancel()

还可以以同步(阻塞)的方式拉取消息。要了解更多关于订阅的信息,请参阅subscriber文档

身份验证

可以为Pub/Sub客户端指定要使用的身份验证方法。这可以通过提供一个明确的Credentials实例来完成。从google-auth库中提供了对各种身份验证方法的支持。

例如,要使用JSON Web Tokens,提供一个google.auth.jwt.Credentials实例

import json
from google.auth import jwt

service_account_info = json.load(open("service-account-info.json"))
audience = "https://pubsub.googleapis.com/google.pubsub.v1.Subscriber"

credentials = jwt.Credentials.from_service_account_info(
    service_account_info, audience=audience
)

subscriber = pubsub_v1.SubscriberClient(credentials=credentials)

# The same for the publisher, except that the "audience" claim needs to be adjusted
publisher_audience = "https://pubsub.googleapis.com/google.pubsub.v1.Publisher"
credentials_pub = credentials.with_claims(audience=publisher_audience)
publisher = pubsub_v1.PublisherClient(credentials=credentials_pub)

版本控制

此库遵循语义版本控制

它目前处于主要版本一(1.y.z),这意味着公共API应该被认为是稳定的。

贡献

对此库的贡献始终受到欢迎并受到高度鼓励。

有关如何开始的更多信息,请参阅CONTRIBUTING文档

社区

最佳提问方式是通过Stackoverflow:https://stackoverflow.com/questions/tagged/google-cloud-pubsub

许可证

Apache 2.0 - 有关更多信息,请参阅LICENSE

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

google_cloud_pubsub-2.25.2.tar.gz (356.6 kB 查看散列值)

上传时间 源代码

构建分发

google_cloud_pubsub-2.25.2-py2.py3-none-any.whl (287.8 kB 查看散列值)

上传时间 Python 2 Python 3

由以下机构支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页