当前位置: 首页 > 面试题库 >

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

太叔富
2023-03-14
问题内容

我想使用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类似的方法?


问题答案:

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



 类似资料:
  • 我试图用Java实现这里描述的非阻塞二叉查找树。该算法基于单世界CAS,但是: 状态和信息字段一起存储在 CAS 对象中。因此,内部节点使用四个字的内存。 我决定使用AtomicStampedReference来存储这些数据。问题是它 通过创建表示“盒装”[引用,整数] 对的内部对象来维护标记引用。 该结构的内部实施: 配对定义为: 这个实现仍然是非阻塞的吗? 额外的问题是:是什么使这种compa

  • ReplyingKafkaTemplate是否阻塞?有无反应性替代方案?

  • 问题内容: 最近几天,我一直在与Numpy和matplotlib一起玩。我在尝试使matplotlib绘制函数而不阻止执行时遇到问题。我知道这里已经有很多线程在问类似的问题,并且我已经在Google上搜索了很多,但是没有设法使这项工作有效。 我曾尝试按照某些人的建议使用show(block = False),但是我得到的只是一个冻结的窗口。如果我简单地调用show(),则将正确绘制结果,但执行将被

  • 在过去的几天里,我一直在玩Numpy和matplotlib。我有问题试图使matplotlib图函数不阻塞执行。我知道已经有很多线程在SO上问类似的问题,我已经谷歌了很多,但还没有成功。 我尝试过使用show(block=False),就像一些人建议的那样,但我得到的只是一个冻结的窗口。如果我简单地调用show(),结果会被正确绘制,但执行会被阻止,直到窗口关闭。从我读过的其他线程中,我怀疑sho

  • 问题内容: 我的印象是,通过SQLAlchemy进行的数据库调用将被阻止,不适合用于除同步代码以外的任何其他内容。我是正确的吗(我希望不是!),或者是否可以将其配置为非阻塞状态? 问题答案: 您可以使用gevent以非阻塞样式使用SQLA。这是使用psycopg2和psycopg2的协程支持的示例: https://bitbucket.org/zzzeek/green_sqla/ 我也听说人们在p

  • 我有一个顶点,它有一个处理程序,可以在事件循环线程中调用Vertx的Web客户端。实际的底层API调用是同步的还是异步的?它会阻塞我的事件循环线程吗?假设我的API调用需要30秒才能返回。 我是否需要用Vertx.execute阻塞(p-