Django et Flask utilisent des signaux - ce dernier utilise la bibliothèque Blinker . Dans le contexte de Python, Blinker et de la bibliothèque pubsub Python, comment les signaux et pubsub se comparent-ils? Quand utiliserais-je l'un ou l'autre?
Réponses
Trop de publicités?Clignotant docs et PubSub docs.
Aussi loin que l' Blinker
et PubSub
aller, ils sont la même chose. La différence est dans la façon dont ils vont sur elle:
Avec Blinker
lorsque vous vous abonnez à un signal de vous donner le nom du signal, et quand vous activez le signal de vous passer de l'activation de l'objet.
Avec PubSub
lorsque vous vous abonnez à un écouteur vous donner le nom (le même que Blinker
), mais lorsque vous en informer l'auditeur, de vous transmettre les données directement en tant que mot-clé arguments. En raison de l'argument mot-clé méthode de transmission des données, il est possible d'avoir beaucoup plus de contrôles de sécurité à l'aide de PubSub
.
Personnellement, j'irais avec Signals
car il correspond à ma façon de penser mieux, mais PubSub
a certainement une place aussi.
Cela pourrait clair exactement combien de Pubsub se rapporte à des signaux: http://pubsub.sourceforge.net/apidocs/concepts.html
Pubsub facilite le découplage des composants (callables, des modules, des paquets) au sein d'une application. Il le fait par:
- Permettant aux parties de l'application pour envoyer des messages à "le reste de l'application" sans avoir à connaître
- si les messages seront traités:
- peut-être que le message sera ignoré complètement,
- ou traités par un beaucoup de différentes parties de l'application;
- la façon dont les messages seront traités:
- ce qui va être fait avec le message et de son contenu;
- dans quel ordre tout message sera envoyé au reste de l'application;
- Permettant aux parties de la demande pour recevoir et traiter des messages de "le reste de l'application" sans avoir besoin de savoir qui a envoyé les messages.
Un auditeur est "une partie de l'application qui veut recevoir des messages". Un auditeur s'abonne à un ou plusieurs sujets. Un expéditeur est une partie de l'application qui demande Pubsub pour envoyer un message d'un sujet donné. L'expéditeur fournit des données, le cas échéant. Pubsub permettra d'envoyer le message, y compris les données, à tous les auditeurs du message du sujet.