如果我多次订阅同一主题会发生什么?(Python、Google Pubsub)

如果我多次订阅同一主题会发生什么?(Python、Google Pubsub),python,google-cloud-platform,google-cloud-pubsub,Python,Google Cloud Platform,Google Cloud Pubsub,如果我有以下代码,会发生什么不好的事情吗?它会尝试创建新订阅吗?subscribe是幂等运算吗 subscriber=pubsub_v1.SubscriberClient() def f(味精): 打印(消息数据) 打印(msg) msg.ack() def create_订阅(): results=[]#一些sql查询 对于结果中的结果: 路径=self.subscriber.subscription\u路径(“项目”,结果) subscriber.subscribe(self.path,ca

如果我有以下代码,会发生什么不好的事情吗?它会尝试创建新订阅吗?
subscribe
是幂等运算吗

subscriber=pubsub_v1.SubscriberClient()
def f(味精):
打印(消息数据)
打印(msg)
msg.ack()
def create_订阅():
results=[]#一些sql查询
对于结果中的结果:
路径=self.subscriber.subscription\u路径(“项目”,结果)
subscriber.subscribe(self.path,callback=f)
尽管如此:
时间。睡眠(60)
创建订阅()

我需要能够根据人们创建新订阅的时间更新我的订阅。这种方法有什么问题吗?

您应该避免对同一订阅重复调用“subscribe”——即使您很可能不会增加传递的重复消息的数量,但您会创建接收基础结构的多个实例。这不仅效率低下,而且破坏了Pub/Sub提供的一些流控制属性,因为这些属性只针对订阅服务器的每个实例计算;i、 例如,它可能会导致订阅服务器作业内存不足并失败


相反,我建议跟踪您已经创建的订户。请注意,“subscribe”方法返回一个未来,您可以使用它来实现此目的,或者在必要时取消消息接收。您可以在上找到更多详细信息。

此API的文档没有说明在单个程序中多次订阅特定路径是否为幂等?你能试一下吗…订阅一个主题多次,然后看看你是否收到重复的消息?我是说,我试过了。我没有收到两次或任何消息,但不确定。你说的“接收基础设施”是什么意思?我觉得这是文档中缺少的部分。例如,在Django项目中使用此选项时,似乎会为每个意外创建的订阅创建一个新的数据库连接。“接收基础结构”在本上下文中指客户端库中管理到服务器的连接(以及连接本身)的类并管理订户客户端接收的消息的生存期。