Blinker文档 和 PubSub文档。 就 Blinker 和 PubSub 而言,它们是同一件事。区别在于它们的处理方式: 使用 Blinker 时,当您订阅一个信号时,需要给出信号名称,当您激活信号时,则要传递激活对象。 使用 PubSub 时,当您订阅一个侦听器时,也需要给出名称(与 Blinker 相同),但是当您通知侦听器时,则直接将数据作为关键字参数传递。由于使用关键字参数传递数据的方法,因此可以使用 PubSub 进行更多的安全检查。 个人而言,我会选择 Blinker,因为它更符合我的思维方式,但是 PubSub 也肯定有其应用场景。
这可能会清楚地解释Pubsub与信号的关系:http://pubsub.sourceforge.net/apidocs/concepts.html Pubsub通过以下方式促进应用程序中组件(可调用项、模块、包)的解耦:- 允许应用程序的某些部分向“应用程序的其余部分”发送消息,而无需知道: - 消息是否会被处理: - 可能完全忽略该消息, - 或由应用程序的多个不同部分处理; - 消息将如何处理: - 将对消息及其内容执行什么操作; - 任何给定消息将按什么顺序发送到应用程序的其余部分。 - 允许应用程序的某些部分从“应用程序的其余部分”接收并处理消息,而无需知道谁发送了消息。监听器是“希望接收消息的应用程序的一部分”。监听器订阅一个或多个主题。发送方是请求Pubsub发送给定主题的消息的应用程序的任何部分。发送方提供数据(如果有)。 Pubsub将消息(包括任何数据)发送到该消息主题的所有侦听器。