En las aplicaciones web basadas en Python, ¿para qué ha usado las ‘señales’?

En la aplicación Django, la usé para eliminar dependencias entre diferentes aplicaciones. Así que ahora tengo una aplicación web (e-shop) con muchas aplicaciones y algunas aplicaciones no son obligatorias para cada instancia de e-shop. Estas aplicaciones no obligatorias puedo agregarlas o eliminarlas de la lista de aplicaciones en la configuración sin ninguna modificación, incluso si estas aplicaciones necesitan comunicarse entre sí.

Por ejemplo, cuando se paga el pedido, la señal dice que se envió y otras aplicaciones pueden recibir esa señal y hacer otras cosas. La aplicación de facturas puede enviar correo con el PDF de la factura, otra aplicación puede enviar productos de software al correo electrónico de los clientes, otra aplicación puede enviar mensajes al almacén, etc.

O incluso puedo tener más aplicaciones haciendo lo mismo . No es lo que tengo, pero me imagino que tengo dos aplicaciones de facturas, una simple que es solo una lista de facturas y genera archivos PDF y otra que está conectada a algún software de contabilidad. (Y el cliente puede elegir cuál prefiere. Para mí es solo un cambio de pocas letras. Idealmente).

Sin señales, tendría que cambiar el código en otra aplicación de la que quiero agregar al proyecto. Por ejemplo, en la ‘orden’ de la aplicación, tendría que agregar o cambiar la línea cada vez que diga algo como factura de importación; invoice.create (…) cuando cambio la configuración de qué aplicación de factura usar.

Con señales no tengo que modificar nada. Todo funciona bien y las aplicaciones no necesitan conocerse entre sí. Eso es bueno.

Pero no olvide que las señales no son soluciones para todo. Piensa antes de usarlos. Probablemente habrá una mejor manera de hacerlo sin ellos. ¡Encontrar errores en las señales no es divertido!