python - 使用 Python 客户端处理 Google Pub Sub 串行任务

标签 python google-cloud-platform google-cloud-pubsub

我已经使用 Google Pubsub 设置了消息队列。一切正常。唯一的问题是所有任务都是同时运行的(好吧,目前只有 3 个任务)。由于它们在目标服务器上的权重相当大,因此存在一些问题。

我的解决方案是处理一项任务,等到它完成然后再次运行它。不幸的是,我没有在 Python 库中找到任何可以设置 MaxProcessing 的内容。

我该怎么做?

最佳答案

您可以按照“消息流控制”小节中的说明限制发送至客户端的未完成消息数量。我复制了下面的 python 的最小示例。 https://cloud.google.com/pubsub/docs/pull#subscriber-flow-control-python

from google.cloud import pubsub_v1

# TODO project_id = "Your Google Cloud Project ID"

# TODO subscription_name = "Your Pub/Sub subscription name"

subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path(
    project_id, subscription_name)

def callback(message):
    print('Received message: {}'.format(message.data))
    message.ack()

# TODO max_messages_outstanding = 1

# Limit the subscriber to only have ten outstanding messages at a time.
flow_control = pubsub_v1.types.FlowControl(
    max_messages=max_messages_outstanding)
subscriber.subscribe(
    subscription_path, callback=callback, flow_control=flow_control)

-丹尼尔

关于python - 使用 Python 客户端处理 Google Pub Sub 串行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52962863/

相关文章:

google-cloud-platform - 在 Google Cloud 上运行批处理 python 进程

firebase - 如何将数据从谷歌云 pubsub 获取到 firebase 实时数据库

python - 如何用numpy实现tf.space_to_depth?

google-cloud-platform - 如果我刚刚升级了结算帐号,GCP 免费试用额度是否会继续?

google-cloud-platform - 如何通过日志查询获取最近1小时的日志结果?

node.js - InvalidArgument topicName 与projects/outrigger-170662/topics/gmail 不匹配

python - 在 python 中使用 IOT 适配器和 google pub/sub api 将 MQTT 与 GCP 集成

python - 如何在Python数据框中的列上编写和循环列表?

python - 如何对 Poly3DCollection 进行光照和着色

python - 是否有适用于 Google App Engine 的在线 IDE?