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

推荐的Python发布/订阅/分发模块?

宰父正真
2023-03-14
问题内容

Pypubsub为您的Python应用程序提供了一种解耦其组件的简单方法:应用程序的某些部分可以发布消息(带有或不带有数据),其他部分可以订阅/接收它们。这允许消息“发件人”和消息“侦听器”彼此不知道:

  • 一个不需要导入另一个
  • 发件人不需要知道
    • “谁”得到消息,
    • 监听者将如何处理数据,
    • 甚至任何侦听器都将获取消息数据。
  • 同样,听众也不必担心消息的来源。

这是用于实现模型-视图-控制器体系结构或任何促进其组件解耦的类似体系结构的好工具。

从PyPubSub到PyDispatcher到简单的“自制”类,似乎有很多Python模块可以在网上浮动发布/订阅。

比较不同的模块时是否有特定的优点和缺点?对哪些模块进行了基准测试和比较?

提前致谢


问题答案:

PyDispatcher在Django中大量使用,并且对我来说非常有效(我想对于整个Django社区)。

我记得有一些性能问题:

  • PyDispatcher进行的参数检查很慢。
  • 未使用的连接会产生不必要的开销。

据我所知,您不太可能在中小型应用程序中遇到此问题。因此,这些问题可能与您无关。如果您认为需要每一个性能(过早的优化是万恶之源!),则可以查看对Django中PyDispatcher所做的修改。

希望这可以帮助。



 类似资料:
  • 简介 Redis 的列表类型键可以用来实现队列,并且支持阻塞式读取,所以 Redis 能够非常容易的实现一个高性能的优先队列。同时在更高层面上,Redis 还支持“发布/订阅”的消息模式,可以基于此构建一个聊天系统。 发布示例 发布(Publish)即将消息发布到频道中。示例代码: // 发送消息 Redis::publish('chan-1', 'Hello, World!'); // 发送消息

  • Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2、client5 和 client1 之间的关系: 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个

  • 主要内容:发布/订阅流程,常用命令汇总,基本命令应用Redis PubSub 模块又称发布订阅者模式,是一种消息传递系统,实现了消息多播功能。发布者(即发送方)发送消息,订阅者(即接收方)接收消息,而用来传递消息的链路则被称为  channel。在 Redis 中,一个客户端可以订阅任意数量的 channel(可译为频道)。 消息多播:生产者生产一次消息,中间件负责将消息复制到多个消息队列中,每个消息队列由相应的消费组进行消费,这是分布式系统常用的

  • 发布/订阅 消息顺序 当使用 pub/sub API的时候,你需要做一个决定:那就是对于来自同一个连接的消息是应该按顺序处理还是应该并行处理。 按顺序处理意味着你不需要关心线程安全,并且保持了事件的顺序;消息会以完全相同的顺序接收处理(通过队列),因此,这意味着消息能够被相互延迟。 另外一种选择是并发处理。使用并发处理 不能保证 工作处理的有序性,并且你的代码要对并行消息完全负责确保它不会破坏内部

  • 发布和订阅 Meteor 服务端可以通过Meteor.publish发布文档集,同时客户端可以通过Meteor.subscribe订阅这些发布。 任何客户端订阅的文档都可以通过find方法进行查询使用。 默认情况下,每个新创建的 Meteor 应用包含有 autopublish 包,它会自动为每个客户端发布所有可用的文档。 为了可以更细化的控制不同客户端所接收的数据文档,首先应该在终端移除 aut

  • Redis 通过 PUBLISH 、 SUBSCRIBE 等命令实现了订阅与发布模式, 这个功能提供两种信息机制, 分别是订阅/发布到频道和订阅/发布到模式, 下文先讨论订阅/发布到频道的实现, 再讨论订阅/发布到模式的实现。 频道的订阅与信息发送 Redis 的 SUBSCRIBE 命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端