Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python客户端进行googlepub子序列任务处理_Python_Google Cloud Platform_Google Cloud Pubsub - Fatal编程技术网

使用Python客户端进行googlepub子序列任务处理

使用Python客户端进行googlepub子序列任务处理,python,google-cloud-platform,google-cloud-pubsub,Python,Google Cloud Platform,Google Cloud Pubsub,我已经用Google Pubsub设置了一个消息队列。一切正常。唯一的问题是所有任务都是同时运行的(好的,目前只有3个任务)。由于它们在目标服务器上的重量相当重,因此存在一些问题 我的解决方案是处理一个任务,等待它完成,然后再次运行它。不幸的是,我在Python库中没有找到任何设置MaxProcessing的内容 我将如何做到这一点?您可以按照“消息流控制”小节中的说明限制发送给客户端的未完成消息的数量。我在下面复制了python的最小示例 -丹尼尔你好,拉普斯利。IMHO我认为,使用googl

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

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


我将如何做到这一点?

您可以按照“消息流控制”小节中的说明限制发送给客户端的未完成消息的数量。我在下面复制了python的最小示例


-丹尼尔

你好,拉普斯利。IMHO我认为,使用googlepythonpubsubapi控制消息以便“一次一条”地提取它们是不可能的(相当令人恼火)。不久前,我尝试过这样做,并测试了几种不同的方法,但都没有成功,尽管我应该提醒自己,我对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)