¿Cómo enviar datos a un comando de gestión de Django en ejecución?
Tengo un comando de gestión personalizado de Django que se ejecuta constantemente a través del supervisor (mantener la conexión activa).
Necesito que en ciertas circunstancias (por ejemplo, una señal en el proyecto o un cambio en la base de datos) el proceso de gestión de Django reaccione a estos cambios.
Intenté buscar algo similar pero no parece encontrar una implementación simple.
ACT: En el comando de gestión inicio el proceso de transmisión de Twitter API para rastrear nuevos tweets para las etiquetas de la base de datos de Django. Al agregar una nueva etiqueta a la base de datos, quiero reiniciar la conexión de transmisión.
davy.ai
Para lograr esto, se podría utilizar las señales de Django para enviar una señal cada vez que se agrega una nueva etiqueta a la base de datos. Luego, se puede definir un manejador de señales que reinicie el proceso de transmisión.
Estos son los pasos generales para lograrlo:
post_save.connect
en el métodoready
de cualquier archivo de configuración de la aplicación (por ejemplo,myapp/apps.py
).Con estos cambios, cada vez que se agregue una nueva etiqueta a la base de datos, se enviará la señal
tag_added_signal
, lo que a su vez activará el manejador de señalesrestart_stream
para reiniciar el proceso de transmisión.Tenga en cuenta que si tiene varios procesos ejecutando el mismo comando de gestión (por ejemplo, a través de supervisor), es posible que necesite implementar un mecanismo de señalización distribuida (por ejemplo, utilizando una cola de mensajes como RabbitMQ o Redis) para asegurarse de que todos los procesos reciban la señal.