Похоже, вы объединяете push-подписки и pull-подписки .Push-подписки обычно не используют клиентскую библиотеку Cloud Pub / Sub;можно использовать эту библиотеку при попытке получить сообщения из подписки.Вам следует позвонить modify_push_config
только в том случае, если вы пытаетесь изменить существующую подписку с push-подписки на push-подписку.Если вы с самого начала знаете, что хотите использовать принудительную подписку, то при создании подписки вам следует выбрать эту опцию в консоли Cloud:
или укажите конечную точку при создании подписки:
gcloud pubsub subscriptions create <subscription name> --topic <topic name> --push-endpoint <URL to push to>
Вам потребуется зарегистрировать конечную точку push .Обратите внимание, это означает, что localhost не будет работать как конечная точка push.Кроме того, конечной точкой push-адреса должен быть HTTPS, а не HTTP.
Как только вы создали конечную точку push, вам нужно что-то настроить в этой конечной точке для получения запросов HTTP POST.Это не то, что специфично для Pub / Sub;Вы можете использовать любую библиотеку Python, которую вы хотите, которая устанавливает конечную точку HTTPS.Python поставляется с http.server , который может сделать это, хотя, вероятно, его следует использовать только для экспериментов, а не развертывать как полностью безопасное производственное решение. сообщений, которые вы получите , являются сообщениями Pub / Sub в JSON-кодировке, например,
{
"message": {
"attributes": {
"key": "value"
},
"data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
"messageId": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
. Вы используете код ответа HTTP для подтверждения или удаления сообщения.Все коды 200, 201, 202, 204 или 102 указывают на успешную обработку, а любой другой код указывает, что сообщение должно быть доставлено.