开发者社区> 问答> 正文

tornado-redis 的 PUB/SUB 和 BLPOP为什么不能同时监听?

我想在一个系统启动的时候,同时监听 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()

请问问题处在什么地方,该如何同时监听这两个?

展开
收起
落地花开啦 2016-01-31 15:14:30 3361 0
1 条回答
写回答
取消 提交回答
  • redis的一个连接如果用作pub sub 就不能用作操作普通命令了

    2019-07-17 18:36:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Redis在唯品会的应用实践——架构演进与功能定制 立即下载
微博的Redis定制之路 立即下载
云数据库Redis版的开源之路 立即下载