一尘不染

是否可以使用非阻塞Redis pubsub?

redis

我想使用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一部分将被阻止。我只想检查给定频道中是否有数据,该如何完成?有没有check类似的方法?


阅读 529

收藏
2020-06-20

共1个答案

一尘不染

我认为那不可能。通道没有任何“当前数据”,您订阅了一个通道并开始接收该通道上其他客户端推送的消息,因此它是一个阻塞的API。另外,如果您查看pub /
sub 的Redis Commands文档,将会更加清楚。

2020-06-20