Django y Flask hacen uso de señales; esta última usa la biblioteca Blinker. En el contexto de Python, Blinker y la biblioteca Python pubsub, ¿cómo se comparan las señales y pubsub? ¿Cuándo usaría uno u otro?Python: ¿cómo se diferencian las señales de pubsub?
Respuesta
Por lo que respecta a Blinker
y PubSub
ir, son lo mismo. La diferencia está en cómo lo hacen:
Con Blinker
cuando se suscribe a una señal, usted da el nombre de la señal, y cuando activa la señal, pasa el objeto activador.
Con PubSub
cuando se suscribe a un oyente, usted da el nombre (igual que Blinker
), pero cuando notifica al oyente, pasa los datos directamente como argumentos de palabra clave. Debido al método de argumento de palabra clave para pasar datos, es posible tener muchas más verificaciones de seguridad usando PubSub
.
Personalmente, me gustaría ir con Signals
, ya que coincide con mi forma de pensar mejor, pero PubSub
ciertamente tiene un lugar también.
¡Premio Nigromante! :) –
Sobre el enlace de la url de PubSub está muerto; Prueba: http://pubsub.sourceforge.net/ – DevPlayer
@DevPlayer: Gracias, actualicé mi enlace. –
Esto podría aclarar exactamente cómo PubSub se refiere a las señales: http://pubsub.sourceforge.net/apidocs/concepts.html
PubSub facilita el desacoplamiento de los componentes (callables, módulos, paquetes) dentro de una aplicación. Esto se logra mediante:
- partes Permitir de la aplicación para enviar mensajes a “el resto de la aplicación” sin tener que saber
- si serán manejados los mensajes:
- quizás el el mensaje se ignorará por completo,
- o será manejado por muchas partes diferentes de la aplicación;
- cómo se manejarán los mensajes:
- lo que se hará con el mensaje y su contenido;
- en qué orden se enviará un mensaje determinado al resto de la aplicación;
- partes Permitir de la aplicación para recibir y manejar los mensajes de “el resto de la aplicación” sin tener que saber quién envió los mensajes.
Un oyente es "una parte de la aplicación que desea recibir mensajes". Un oyente se suscribe a uno o más temas. Un remitente es cualquier parte de la aplicación que solicita a Pubsub que envíe un mensaje de un tema determinado. El remitente proporciona datos, si los hay. Pubsub enviará el mensaje, incluidos los datos, a todos los oyentes sobre el tema del mensaje.
¿No se aplican todas estas cosas a las señales y los receptores también? – matthewwithanm
- 1. ¿Cómo se diferencian las "JVM modernas" de las JVM antiguas?
- 2. ¿Cómo se diferencian las funciones de MATLAB y la línea?
- 3. Python - trampa de todas las señales
- 4. ¿Cómo se diferencian memory_order_seq_cst y memory_order_acq_rel?
- 5. ¿En qué se diferencian las claves públicas y privadas?
- 6. ¿Cómo se relaciona SIGINT con las otras señales de terminación?
- 7. ¿Existen bibliotecas genéricas de Python que proporcionan capacidades de "señales" (eventos) como las señales de Django?
- 8. ¿Cómo se manejan las señales asíncronas en Linux?
- 9. ImportError: no se pueden importar las señales de nombre
- 10. ¿En qué se diferencian las funciones de prototipo de las funciones normales en javascript?
- 11. Cómo rastrear las señales emitidas en QT?
- 12. ¿Cómo atrapo las señales en PowerShell?
- 13. señales de manipulación en Python Hilos
- 14. ¿Cómo se diferencian las arañas web de la araña de Wget?
- 15. ¿Cómo se quita un manejador de señales
- 16. Python GTK +: ¿crea señales personalizadas?
- 17. Qt pregunta: ¿Cómo funcionan las señales y las ranuras?
- 18. Faye o Redis Pubsub
- 19. Python 2 no maneja las señales si TCPServer se está ejecutando en otra secuencia
- 20. Extendiendo django-registration usando las señales
- 21. Django: ¿Para qué sirven exactamente las señales?
- 22. ¿Cómo uso las señales de Django con un modelo abstracto?
- 23. ¿En qué se diferencian Adobe PhoneGap y Apache Cordova?
- 24. XMPP: agregar bidireccionalidad a pubsub?
- 25. ¿Cómo evitar que python propague señales a subprocesos?
- 26. Cómo usar enumeraciones en las señales y ranuras Qt
- 27. señales de bloqueo de Linux a Python init
- 28. ¿Es posible ignorar todas las señales?
- 29. Los manejadores de señales y la tala en Python
- 30. jedis pubsub y timeouts: ¿cómo escuchar infinitamente como suscriptor?
Estoy buscando una respuesta definitiva de alguien que ha estado en este camino como "Son lo mismo" o "PubSub generalmente implica X mientras que las señales generalmente significan Y." –