我想在一个系统启动的时候,同时监听 redis 的一个 LIST 和 PUB/SUB 的一个 channel,但是发现两者不能同时运行。
具体表现是:先调用 listen_pub 时 listen_list 完全不工作;先调用 listen_list 时,只能收到一条 push 数据,然后协程切换到 listen_pub,listen_list 又不工作了
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)
@coroutinedef listen_list():
while True:
res = yield Task(rds.brpop, keys='list')
print res
def test():
listen_pub()
listen_list()
test()
IOLoop.current().start()
请问问题处在什么地方,该如何同时监听这两个?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。