Tengo una aplicación Django que genera un subproceso cada vez que se inserta una base de datos.
modelos.py
# spawn subprocess to trigger tweepy # output of subprocess DOES NOT log to the console. def tweepy_tester(sender, **kwargs): if kwargs['created']: logger.error('tweepy trigger-start!') p = subprocess.Popen([sys.executable, "/Users/viseshprasad/PycharmProjects/Blood_e_Merry/loginsignup/tests.py"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) logger.error('tweepy trigger-over!') # use post_save to trigger tweepy later post_save.connect(tweepy_tester, sender=User)pruebas.py
logger = logging.getLogger(__name__) # Create your tests here. def for_thread(): i = 0 while True: f = open('test.txt', 'a') f.write('Tweepy triggered ' + str(i) + '\n') # python will convert \n to os.linesep f.close() # you can omit in most cases as the destructor will call it i += 1 for_thread() El disparador funciona bien, pero el subproceso solo escribe 3640 líneas en el archivo test.txt , aunque he usado while True: básicamente estoy buscando un subproceso para ejecutar sin parar después del disparador, como un hilo separado y sin molestar al Hilo principal.
El propósito: ejecuto mi aplicación con el servidor de ejecución habitual python manage.py runserver . Registro de usuario -> inserción de base de datos -> desencadena mi implementación de tweepy, que continúa transmitiendo tweets y analizándolos sin parar en un hilo de fondo diferente para no interferir con el proceso de registro.
La prueba anterior es para este propósito. Cualquier ayuda es apreciada. Cualquier sugerencia alternativa para implementar esto también es bienvenida.
Gracias.