Estoy buscando un método simple (es decir, no uno que me obligue a configurar un servidor separado para manejar una cola de mensajes) para realizar una encuesta larga una pequeña interfaz web que ejecuta cálculos y produce un gráfico. Esto es lo que mi interfaz web tiene que hacer:cola no de mensaje/larga duración simple en Python (y frasco)
- El usuario solicita un gráfico/datos en una interfaz web
- Server se ejecuta algunos cálculos.
- Mientras el servidor ejecuta cálculos, se actualiza un pequeño contenedor (probablemente a través de AJAX/jQuery) con el progreso del cálculo (similar a lo que haría en una consola con impresión (es decir, imprimir 'calcular la función de densidad ...'))
- El usuario muestra los gráficos y los finales de cálculo.
Como todo el cálculo se realiza en el servidor, no estoy seguro de cómo configurarlo fácilmente. Obviamente, voy a querer configurar una API REST para manejar la votación, lo que sería fácil en Flask. Sin embargo, no estoy seguro de cómo recuperar las actualizaciones reales. Una solución obvia, aunque complicada para este propósito, sería configurar una cola de mensajes y realizar encuestas largas. Sin embargo, no estoy seguro de que este sea el enfoque correcto para algo tan simple.
Aquí están mis preguntas:
- ¿Hay una manera de hacer esto utilizando el sistema de archivos? El rendimiento no es un gran problema. ¿Puede AJAX/jQuery encontrar mensajes de un archivo? Guarde el progreso en algún archivo .json?
- ¿Qué pasa con el decapado? (Realmente no sé mucho sobre el decapado, pero tal vez podría extraer un mensaje de dict y podría ser leído por una API que está manejando el sondeo).
- ¿El sondeo es incluso el enfoque correcto? ¿Hay un patrón mejor o más común para manejar esto?
Tengo la sensación de que estoy sobrecomplicando las cosas, ya que sé que este tipo de cosas es común en la web. Muy a menudo veo cosas que suceden y una pequeña imagen de "loading.gif" se está ejecutando mientras se realizan algunos cálculos (por ejemplo, en Google Analytics).
Gracias por su ayuda!
¡Ah, gracias * tanto * para esto! Voy a echarle un vistazo a tu código esta noche. "Pero, en mi experiencia, encontrar ejemplos buenos y sencillos de implementación del servidor ha sido difícil". es la experiencia exacta que tuve, así que me alegra saber que no estoy solo. ¡¡Gracias de nuevo!! – aaronlevin
FYI Intenté esto primero con bottle.py (con un script de subproceso largo) y obtuve algunos problemas de bloqueo. Con Flask funciona genial. ¡Gracias! – Nate
¿Cómo se sincronizarían varios clientes para que todos reciban la señal al mismo tiempo? – r1d3h4rd