Hay un servidor y un webframework. ¿Cuándo debemos usar el framework y cuándo podemos reemplazarlo por otro?
Esta distinción es un poco borrosa. Si solo está sirviendo páginas estáticas, usaría uno de los servidores rápidos como lighthttpd. De lo contrario, la mayoría de los servidores proporcionan una complejidad variable de marco para desarrollar aplicaciones web. Tornado es un buen framework web. Twisted es aún más capaz y se considera un buen marco de trabajo en red. Tiene soporte para muchos protocolos.
Tornado y Twisted son marcos que brindan soporte para el desarrollo de aplicaciones web / redes asíncronas y sin bloqueo.
¿Cuándo se debe utilizar Tornado? ¿Cuándo es inútil? Al usarlo, ¿qué se debe tener en cuenta?
Por su propia naturaleza, las E / S asíncronas / sin bloqueo funcionan muy bien cuando son intensivas en E / S y no en computación. La mayoría de las aplicaciones web / de redes se adaptan bien a este modelo. Si su aplicación exige que se realice cierta tarea computacional intensiva, entonces debe delegarse a algún otro servicio que pueda manejarla mejor. Mientras que Tornado / Twisted puede hacer el trabajo de servidor web, respondiendo a las solicitudes web.
¿Cómo podemos hacer que un sitio sea ineficiente usando Tornado?
- Hacer cualquier tarea intensiva computacional
- Introducir operaciones de bloqueo
Pero supongo que no es una solución milagrosa y si ejecutamos ciegamente un sitio basado en Django o cualquier otro sitio con Tornado, no aumentará el rendimiento.
El rendimiento suele ser una característica de la arquitectura completa de aplicaciones web. Puede reducir el rendimiento con la mayoría de los marcos web, si la aplicación no está diseñada correctamente. Piense en el almacenamiento en caché, el equilibrio de carga, etc.
Tornado y Twisted proporcionan un rendimiento razonable y son buenos para crear aplicaciones web de alto rendimiento. Puede consultar los testimonios de twisted y tornado para ver de lo que son capaces.
Lamento haber respondido una vieja pregunta, pero encontré esta y me pregunté por qué no tenía más respuestas. Para responder a la pregunta de Bart J:
Bueno, eso depende del tipo de análisis que estés haciendo y del hardware :) Mucho tiempo es mucho tiempo, así que si tu aplicación tarda más de medio segundo en responder, parecerá lenta: crea un perfil de tu aplicación.
La clave para los sistemas rápidos es una gran arquitectura, no tanto los detalles como, por ejemplo, qué marco estás usando (Twisted, Tornado, Apache + PHP). Tornado tiene un estilo de procesamiento asincrónico y eso es realmente a lo que se reduce, en mi opinión. Node.js, Twisted y Yaws son ejemplos de otros servidores web asincrónicos que escalan muy bien debido a un enfoque ligero y un estilo de procesamiento asincrónico.
Entonces:
Tornado es bueno para manejar muchas conexiones, ya que puede responder a un cliente entrante, enviar un controlador de solicitud y no pensar en ese cliente hasta que la devolución de llamada de resultado se inserte en la cola de eventos. Entonces, para esa calidad específica, Tornado debe usarse cuando desee escalar bien al manejar muchas solicitudes. El procesamiento asíncrono facilita el desacoplamiento funcional y el acceso a datos sin compartir nada. Eso va muy bien con el diseño sin estado como REST u otras arquitecturas orientadas a servicios . Tampoco tiene que lidiar tanto con los subprocesos o procesos de generación con la sobrecarga inherente y puede evitar algunos de los problemas de bloqueo / IPC.
Tornado no hará mucha diferencia, por otro lado, si su backend y / o almacén de datos tarda mucho en procesar las solicitudes. Ayuda a realizar diseños concurrentes y servicios web en particular. La arquitectura concurrente hace que sea más fácil escalar su diseño y mantener el acoplamiento bajo. Esa es mi experiencia con Tornado al menos.
fuente