python - tag - include template django
Enfoque simple para lanzar tareas en segundo plano en Django (3)
Eche un vistazo a django-background-tasks : hace exactamente lo que necesita y no necesita ningún servicio adicional para ejecutarse como RabbitMQ o Redis. Administra una cola de tareas en la base de datos y tiene un comando de administración de Django que puede ejecutar una vez o como un trabajo cron.
Tengo un sitio web de Django y una página tiene un botón (o enlace) que al hacer clic iniciará una tarea de ejecución algo larga. Obviamente, quiero iniciar esta tarea como una tarea en segundo plano e inmediatamente devolver un resultado al usuario. Quiero implementar esto utilizando un enfoque simple que no requiera que instale y aprenda una arquitectura de mensajería completamente nueva como Celery, por ejemplo. No quiero usar el apio! Solo quiero usar un enfoque simple que puedo configurar y comenzar a correr durante la siguiente media hora. ¿No hay una forma sencilla de hacer esto en Django sin tener que agregar (otro) paquete de terceros?
Si está dispuesto a instalar una biblioteca de terceros, pero desea algo mucho más simple que Celery, consulte Redis Queue. Requiere Redis, que es bastante fácil en sí mismo, pero también puede proporcionar muchos otros beneficios.
El propio RQ tiene una configuración casi nula. Es sorprendentemente simple.
Referencias:
Solo usa un hilo.
import threading
t = threading.Thread(target=long_process,
args=args,
kwargs=kwargs)
t.setDaemon(True)
t.start()
return HttpResponse()
Vea esta pregunta para obtener más detalles: ¿Puede Django hacer trabajos de subprocesos múltiples?