【发布时间】:2011-12-13 20:46:30
【问题描述】:
我想用redis的pubsub传输一些消息,但不想被listen屏蔽,如下代码:
import redis
rc = redis.Redis()
ps = rc.pubsub()
ps.subscribe(['foo', 'bar'])
rc.publish('foo', 'hello world')
for item in ps.listen():
if item['type'] == 'message':
print item['channel']
print item['data']
最后一个 for 部分将被阻止。我只想检查给定频道是否有数据,我该如何完成?有checklike 方法吗?
【问题讨论】:
-
您是否有不想被监听阻止的原因? Redis 连接非常便宜,通常会生成多个连接。
-
在 Python 中使用 Redis、ZMQ、Tornado 实现异步 PubSub - github.com/abhinavsingh/async_pubsub
-
使用 pubsub 对象的 .get_message() 方法而不是 .listen() (下面有一个示例)。 [发布此问题时,Python Redis 驱动程序可能不支持该方法]。