Обработка последовательных заданий Google Pub Sub с помощью клиента Python - PullRequest
0 голосов
/ 24 октября 2018

Я установил очередь сообщений с помощью Google Pubsub.Все отлично работаетЕдинственная проблема заключается в том, что все задачи выполняются одновременно (хорошо, в настоящее время это только 3 задачи).Поскольку они довольно тяжелые на целевом сервере, у него есть некоторые проблемы с ним.

Мое решение состоит в том, чтобы обработать одну задачу, подождать, пока она будет выполнена, и запустить ее снова.К сожалению, я не нашел ничего в библиотеке Python для установки MaxProcessing.

Как бы я это сделал?

1 Ответ

0 голосов
/ 13 ноября 2018

Вы можете ограничить количество ожидающих сообщений для вашего клиента, как описано здесь в подразделе «Управление потоком сообщений».Я скопировал минимальный пример для 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)

-Даниель

...