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

时间:2018-10-24 07:07:24

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

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

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以按照“消息流控制”小节中的说明,限制发送给客户端的未完成消息的数量。我在下面复制了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)

-丹尼尔