Tengo un montón de solicitudes de Django que ejecutan algunos cálculos matemáticos (escritos en C y ejecutados a través de un módulo Cython) que pueden tomar una cantidad indeterminada (del orden de 1 segundo) de tiempo para ejecutarse. Además, las solicitudes no necesitan acceder a la base de datos y son independientes entre sí y Django.Django Asynchronous Processing
En este momento todo es síncrono (utilizando tipos de trabajadores de Gunicorn con sync
) pero me gustaría que sea asíncrono y sin bloqueos. En resumen me gustaría hacer algo:
- Recibir la petición AJAX
- Asignar tareas a un trabajador disponible (sin bloquear la aplicación principal de Django web)
- trabajador ejecuta la tarea en una cierta cantidad de tiempo desconocido
- Django devuelve el resultado del cálculo (una lista de cadenas) como JSON cada vez que se completa la tarea
soy muy nuevo en Django asíncrona, por lo que mi pregunta es ¿cuál es la mejor pila fo r haciendo esto
¿Es este tipo de proceso algo para lo que una cola de tareas es adecuada? ¿Alguien recomendaría Tornado + Celery + RabbitMQ, o tal vez alguna otra cosa?
¡Gracias de antemano!
¿Qué hacer con los resultados de los cálculos? – sdolan
Devuelve el resultado (como JSON) al navegador del usuario. –