tornado-redis: 为什么 tornado-redis 的 'listen' 和 'brpop' 不能同时监听
我想在一个系统启动的时候,同时监听 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)
@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()
想请教各位大牛问题出在哪?该怎样同时监听这两个?
tornado-redis python Redis coroutine tornado
永远的真实
9 years, 9 months ago