gpt4 book ai didi

python redis pubsub阻塞

转载 作者:太空宇宙 更新时间:2023-11-04 01:22:36 25 4
gpt4 key购买 nike

import redis
import threading

class Listener(threading.Thread):
def __init__(self, r, channel):
threading.Thread.__init__(self)
self.redis = r
self.pubsub = self.redis.pubsub()
self.pubsub.subscribe(channel)

def run(self):
for item in self.pubsub.listen():
# do stuff
pass

在上面的代码中我如何停止线程?

下面我有一个示例代码向您展示我想要什么:

class Listener(threading.Thread):
def __init__(self, r, channel):
threading.Thread.__init__(self)
self.redis = r
self.pubsub = self.redis.pubsub()
self.pubsub.subscribe(channel)
self.stop = False

def run(self):
while not stop:
# get item from channel

因此,当属性 stop == True 时,线程将退出循环并结束。那可能吗?如果不是,还有哪些替代方案?

最佳答案

有一个有用的要点展示了如何传递一个命令来打破循环并取消订阅。这可能有助于了解如何以其他方式做到这一点。

for item in self.pubsub.listen():
if item['data'] == "KILL":
self.pubsub.unsubscribe()
print self, "unsubscribed and finished"
break
else:
self.work(item)

您可以在此处查看示例代码:

关于python redis pubsub阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20175671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com