30 votes

Python - En quoi les signaux diffèrent-ils de pubsub?

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?

16voto

Ethan Furman Points 12683

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.

6voto

Jesse Taylor Points 944

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X