如果我多次订阅同一个主题会怎样? (Python, Google 发布订阅)
What happens if I subscribe to the same topic multiple times? (Python, Google Pubsub)
如果我有下面的代码,会不会有什么不好的事情发生?它会尝试创建新的订阅吗? subscribe
是幂等运算吗?
subscriber = pubsub_v1.SubscriberClient()
def f(msg):
print(msg.data)
print(msg)
msg.ack()
def create_subscriptions():
restults = [] # some sql query
for result in results:
path = self.subscriber.subscription_path('PROJECT', result)
subscriber.subscribe(self.path, callback=f)
while True:
time.sleep(60)
create_subscriptions()
我需要能够根据人们创建新订阅的时间来更新我的订阅。这种做法有什么问题吗?
您应该避免为同一个订阅重复调用“订阅”——即使您很可能不会增加传递的重复消息的数量,您也会创建接收基础结构的多个实例。这既低效,又破坏了 Pub/Sub 提供的一些流量控制属性,因为这些属性仅针对订阅者的每个实例进行计算;例如,它可能会导致您的订户作业 运行 内存不足并失败。
相反,我建议您跟踪您已经创建了哪些订阅者。请注意,“订阅”方法 returns 可以用于此目的的未来,或者在必要时取消消息接收。您可以在 documentation.
上找到更多详细信息
如果我有下面的代码,会不会有什么不好的事情发生?它会尝试创建新的订阅吗? subscribe
是幂等运算吗?
subscriber = pubsub_v1.SubscriberClient()
def f(msg):
print(msg.data)
print(msg)
msg.ack()
def create_subscriptions():
restults = [] # some sql query
for result in results:
path = self.subscriber.subscription_path('PROJECT', result)
subscriber.subscribe(self.path, callback=f)
while True:
time.sleep(60)
create_subscriptions()
我需要能够根据人们创建新订阅的时间来更新我的订阅。这种做法有什么问题吗?
您应该避免为同一个订阅重复调用“订阅”——即使您很可能不会增加传递的重复消息的数量,您也会创建接收基础结构的多个实例。这既低效,又破坏了 Pub/Sub 提供的一些流量控制属性,因为这些属性仅针对订阅者的每个实例进行计算;例如,它可能会导致您的订户作业 运行 内存不足并失败。
相反,我建议您跟踪您已经创建了哪些订阅者。请注意,“订阅”方法 returns 可以用于此目的的未来,或者在必要时取消消息接收。您可以在 documentation.
上找到更多详细信息