I have created a web app in Flask that accepts an Excel file, then processes it and returns the results back to the user. How can I scale this app?

To echo both Bobby Priambodo and Michael Herman (I sense a trend here of collaboration), definitely look at a worker queue system, but also an asynchronous way of letting the user retrieve their data later. There’s no guarantee as you scale that pushing work onto a queue, waiting for a worker to wake up, take the task, process it, and send data back, will all happen within an “acceptable” amount of time for a user to handle this in real-time.

As you scale, add timers on everything your stack does, and use that data to estimate for the user how long they could likely wait based on the amount of processing already in the pipeline, how big their request is, average times to process that quantity of that kind of work, etc.. It will be a much better user experience. Personally, I’d let the user know to “expect an email from us in 5 to 20 minutes” with a link to where they can download the response.

On the other hand, if you’re trying to build an app with “real-time processing” as a product feature, you have way bigger scalability issues to tackle.

Supongo que está pidiendo escalar, no aumentar. Bueno, para empezar, puede delegar la parte de procesamiento de la hoja de cálculo en otro servicio (ya que me parece que es mucho trabajo de CPU), y solo le da a Flask la responsabilidad de recibir solicitudes, transmitir el archivo al servicio y devolver la respuesta. De esa manera, puede poner el servicio detrás de un equilibrador de carga y escalar ambos de forma independiente.

Pero si la aplicación es lo suficientemente pequeña, es posible que solo desee mantenerla monolítica, ejecutar algunas instancias, colocar un equilibrador de carga frente a ellas y listo.

Sí, como señaló Bobby Priambodo, puede delegar el procesamiento de la hoja de cálculo a una cola de tareas. Esta publicación de blog puede ayudar con eso -> Frasco por ejemplo – Implementación de una cola de tareas de Redis

More Interesting

¿Cuál es la mejor manera de crear un blog desde cero usando Python?

Estoy buscando trabajos de desarrollo web y todos quieren al menos 2 años de experiencia comercial, entonces, ¿por dónde empiezo entonces?

¿Es un CMS bueno para construir un sitio web extenso?

Soy un desarrollador que se está volviendo independiente. ¿Cuál es mi mejor apuesta para tener éxito?

Actualmente estoy aprendiendo HTML, CSS y JavaScript. ¿Se volverán obsoletos estos idiomas debido a sitios web como WordPress y Wix?

Soy un principiante en el desarrollo web, que se siente extremadamente frustrado cuando no puede instalar el software de requisito previo. ¿Qué puedo hacer para facilitar esto?

¿Cómo ejecuto el código JavaScript?

Soy un desarrollador full stack de la aplicación Rails. ¿De qué manera obtendré trabajo independiente?

¿Quiero hacer un proyecto académico de nivel M.tech en mecatrónica? ¿Algunas ideas?

Casi fallé todas las preguntas durante la entrevista de posición de desarrollador de full stack, pero aún así me contrataron, ¿qué pasó?

Sé HTML y JavaScript. ¿Puedo aprender desarrollo web y construir un sitio web en tres meses?

Estoy interesado en crear un sitio donde revise películas nuevas y viejas, bloguee sobre tendencias en el cine mundial y responda preguntas sobre películas. ¿Cuál es la mejor plataforma para alguien que no es increíblemente experto en tecnología?

Conozco Flask bastante bien y me gusta. ¿Hay alguna razón por la que me molestaría en aprender Django?

Estoy estudiando ingeniería de software y también desarrollo de backend. Estoy rodeado de personas que piensan que los desarrolladores de backend ganan menos. ¿Les creeré?

Cómo hacer que un sitio web parezca desagradable, pero sin usuarios