Python 龙卷风redis:为什么';听一听';以及';brpop&x27;龙卷风redis can';我不能同时工作
代码如下所示:Python 龙卷风redis:为什么';听一听';以及';brpop&x27;龙卷风redis can';我不能同时工作,python,redis,tornado,coroutine,Python,Redis,Tornado,Coroutine,代码如下所示: from tornadoredis import Client from tornado.ioloop import IOLoop from tornado.gen import coroutine, Task rds = Client() @coroutine def listen_pub(): def handle(msg): print msg yield Task(rds.subscribe, channels='pub')
from tornadoredis import Client
from tornado.ioloop import IOLoop
from tornado.gen import coroutine, Task
rds = Client()
@coroutine
def listen_pub():
def handle(msg):
print msg
yield Task(rds.subscribe, channels='pub')
rds.listen(handle)
@coroutine
def listen_list():
while True:
res = yield Task(rds.brpop, keys='list')
print res
def test():
listen_pub()
listen_list()
test()
IOLoop.current().start()
当我运行上面的代码时,只有“listen_list”可以接收消息。
为什么“倾听列表”不起作用?
如何同时收听列表和发布/订阅中的消息?查看redis文档: 订阅了一个或多个频道的客户端不应发出 命令,但它可以订阅和取消订阅 其他频道。订阅和取消订阅操作的回复 以消息的形式发送,这样客户端就可以读取 一致的消息流,其中第一个元素表示类型 信息的传递 您必须使用两个连接客户端。
资料来源: