微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Python HTTP 服务器提取 GCP Pub/Sub 消息?

如何解决如何使用 Python HTTP 服务器提取 GCP Pub/Sub 消息?

GCP 为 Pub/Sub 提供 REST API:https://cloud.google.com/pubsub/docs/reference/rest

Python API 允许用户按如下方式拉取消息,使用 Python 库 https://googleapis.dev/python/pubsub/latest/index.html

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)
    try:
        future.result()
    except KeyboardInterrupt:
        future.cancel()

用户是否必须使用这个库?

我想使用不同的 HTTP 客户端通过使用 Pub/Sub API 的 GET 请求来解析这些消息。原则上,这应该使用 requests 库之类的东西来完成,使用 get 方法

import requests

x = requests.get(END_POINT)
print(x.status_code)

但是,这是否适用于来自 Google Pub/Sub 的流式 GET 请求?

解决方法

这不是 GET,而是帖子,是的,您可以使用 API 来拉取消息。您有文档 here

不要忘记ack消息或修改AckDeadline

Google Cloud 上的一切都是 API,但这些库可以帮助您轻松执行任务。但如果你更喜欢重新发明轮子,为什么不呢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。