Python 从端点API URL发布/订阅推送订阅

Python 从端点API URL发布/订阅推送订阅,python,google-cloud-pubsub,Python,Google Cloud Pubsub,我正在我的应用程序中处理pubsub订阅。我想知道如何通过一个端点用python编写推送订阅的代码 以下是我尝试的代码: > from google.cloud import pubsub_v1 > from google.oauth2 import service_account > gcp_service_account_credential_path = 'gcp-service-account.json' >credentials=service_acc

我正在我的应用程序中处理pubsub订阅。我想知道如何通过一个端点用python编写推送订阅的代码

以下是我尝试的代码:

> from google.cloud import pubsub_v1

> from google.oauth2 import service_account


> gcp_service_account_credential_path = 'gcp-service-account.json'


>credentials=service_account.Credentials.from_service_account_file(str(gcp_service_account_credential_path))

> project_id = "my project name"

> topic_name = 'topic name'

> subscription_name = 'sub name'

> endpoint = 'http://localhost:5059/push_pub_sub_data'




> subscriber = pubsub_v1.SubscriberClient(credentials=credentials)

> topic_path = subscriber.topic_path(project_id, topic_name)

>subscription_path=subscriber.subscription_path(project_id,subscription_name)

> push_config = {'push_endpoint': endpoint}

> subscriber.modify_push_config(subscription_path, push_config)

我怎样才能做到这一点呢?

看起来你在混为一谈。推送订阅通常不会使用云发布/订阅客户端库;当试图从订阅中提取消息时,可以使用此库。如果您试图将现有订阅从拉订阅更改为推订阅,则只能调用
modify\u push\u config
。如果您从一开始就知道要使用推送订阅,那么您应该在创建订阅时在云控制台中选择该选项:

或在创建订阅时指定端点:

gcloud pubsub订阅创建--主题--推送端点

你需要这样做。注意,这意味着localhost不能作为推送端点工作。此外,推送端点需要是HTTPS,而不是HTTP

创建推送端点后,需要在该端点处配置一些东西来接收HTTP POST请求。这不是特定于酒吧/酒吧的东西;您可以使用任何设置HTTPS端点的Python库。Python附带了,它可以做到这一点,尽管它可能只用于试验,而不是作为完全安全的生产解决方案部署。这些是JSON编码的发布/订阅消息,例如

{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

您可以使用HTTP响应代码来确认或nack消息。代码200、201、202、204或102都表示处理成功,任何其他代码都表示应重新发送邮件。

看起来您正在合并和删除邮件。推送订阅通常不会使用云发布/订阅客户端库;当试图从订阅中提取消息时,可以使用此库。如果您试图将现有订阅从拉订阅更改为推订阅,则只能调用
modify\u push\u config
。如果您从一开始就知道要使用推送订阅,那么您应该在创建订阅时在云控制台中选择该选项:

或在创建订阅时指定端点:

gcloud pubsub订阅创建--主题--推送端点

你需要这样做。注意,这意味着localhost不能作为推送端点工作。此外,推送端点需要是HTTPS,而不是HTTP

创建推送端点后,需要在该端点处配置一些东西来接收HTTP POST请求。这不是特定于酒吧/酒吧的东西;您可以使用任何设置HTTPS端点的Python库。Python附带了,它可以做到这一点,尽管它可能只用于试验,而不是作为完全安全的生产解决方案部署。这些是JSON编码的发布/订阅消息,例如

{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "SGVsbG8gQ2xvdWQgUHViL1N1YiEgSGVyZSBpcyBteSBtZXNzYWdlIQ==",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

您可以使用HTTP响应代码来确认或nack消息。代码200、201、202、204或102都表示处理成功,任何其他代码都表示应重新发送邮件。

您能提供更多详细信息吗?到目前为止,你尝试了什么?我在谷歌搜索,但我没有找到任何与这种推送机制相关的来源。你能提供更多细节吗?到目前为止,您尝试了什么?我在google中搜索,但没有找到任何与此推送机制相关的源。在创建推送类型订阅时,我们如何获取端点url?我们还需要配置它吗?您所说的“获取端点url”是什么意思?端点url是您在订阅创建时提供的。它将是您以某种方式设置的可以访问的端点。我是说它是如何生成的?我试图使用console创建一个推类型订阅,但它要求一个。。我对这个完全陌生,所以我只是想试试运气。你需要设置一个Web服务器,该服务器有一个与之关联的URL或一个用于处理消息的URL。如果您还没有用于处理消息的端点,并且没有使用推送模型的特定原因,那么请继续使用相同的问题或困惑,即我们可以在何处或如何创建端点url我们如何在创建推送类型订阅时获取端点url?我们还需要配置它吗?您所说的“获取端点url”是什么意思?端点url是您在订阅创建时提供的。它将是您以某种方式设置的可以访问的端点。我是说它是如何生成的?我试图使用console创建一个推类型订阅,但它要求一个。。我对这个完全陌生,所以我只是想试试运气。你需要设置一个Web服务器,该服务器有一个与之关联的URL或一个用于处理消息的URL。如果您还没有处理消息的端点,并且没有使用推送模型的特定原因,那么请坚持使用相同的问题或困惑,即我们可以在何处或如何创建端点url