如何使用 python HTTP 服务器提取 GCP Pub/Sub 消息?
How to pull GCP Pub/Sub messages with a python HTTP server?
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,而是 post,是的,您可以使用 API 来提取消息。您有文档 here
别忘了ack the messages or to modify the AckDeadline
一切都是 API 在 Google 云端,但图书馆可以帮助您轻松地执行任务。但如果你更喜欢重新发明轮子,为什么不呢!
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,而是 post,是的,您可以使用 API 来提取消息。您有文档 here
别忘了ack the messages or to modify the AckDeadline
一切都是 API 在 Google 云端,但图书馆可以帮助您轻松地执行任务。但如果你更喜欢重新发明轮子,为什么不呢!