mac python asynchronous nonblocking tornado

python - mac - ¿Cuándo y cómo usar Tornado? ¿Cuándo es inútil?



tornado python mac (2)

De acuerdo, Tornado no bloquea y es bastante rápido y puede manejar muchas solicitudes permanentes fácilmente.

Pero supongo que no es una bala de plata y si simplemente ejecutamos ciegamente Django o cualquier otro sitio con Tornado no dará ningún impulso en el rendimiento.

No pude encontrar una explicación completa de esto, así que lo estoy preguntando aquí:

  • ¿Cuándo se debe usar Tornado?
  • ¿Cuándo es inútil?
  • Al usarlo, ¿qué se debe tener en cuenta?
  • ¿Cómo podemos hacer un sitio ineficiente usando Tornado?
  • Hay un servidor y un marco web. ¿Cuándo deberíamos usar framework y cuándo podemos reemplazarlo por otro?

Hay un servidor y un marco web. ¿Cuándo deberíamos usar framework y cuándo podemos reemplazarlo por otro?

Esta distinción es un poco borrosa. Solo si está sirviendo páginas estáticas, usaría uno de los servidores rápidos como lighthttpd. De otro modo, la mayoría de los servidores proporcionan una complejidad variable de framework para desarrollar aplicaciones web. Tornado es un buen marco 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 frameworks que brindan soporte para el desarrollo de aplicaciones web / de red asíncronas sin bloqueo.

¿Cuándo se debe usar Tornado? ¿Cuándo es inútil? Al usarlo, ¿qué se debe tener en cuenta?

Por su propia naturaleza, la E / S Async / Non-Blocking funciona muy bien cuando se trata de E / S intensiva y no de computación intensiva. La mayoría de las aplicaciones web / de red se adaptan bien a este modelo. Si su aplicación exige cierta tarea intensiva computacional, debe delegarse a 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 un sitio ineficiente usando Tornado?

  1. Hacer cualquier tarea computacional intensiva
  2. Introducir operaciones de bloqueo

Pero supongo que no es una bala de plata y si simplemente ejecutamos ciegamente Django o cualquier otro sitio con Tornado no dará ningún impulso en 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 and Twisted proporciona un rendimiento razonable y es bueno para crear una aplicación web de alto rendimiento. Puede consultar los testimonios de torcido y tornado para ver de lo que son capaces.


Lamento responder una pregunta anterior, pero me encontré con esta y me pregunté por qué no tenía más respuestas. Para responder la pregunta de Bart J:

Me gustaría analizar los canales RSS en la aplicación Tornado. ¿Consideras que es bastante intensivo computacionalmente?

Bueno, eso depende de qué tipo de análisis estés haciendo y de qué hardware :) Mucho tiempo es mucho tiempo, por lo que si tu aplicación tarda más de medio segundo en responder, parecerá lento: perfila tu aplicación.

La clave para los sistemas rápidos es una gran arquitectura, no tanto los detalles como, por ejemplo, qué marco está usando (Twisted, Tornado, Apache + PHP). Tornado tiene un estilo de procesamiento asincrónico y en realidad es en gran parte a lo que se reduce. Node.js, Twisted y Yaws son ejemplos de otros servidores web asíncronos que se escalan muy bien debido a un enfoque ligero y al estilo de procesamiento asincrónico.

Asi que:

¿Cuándo se debe usar Tornado?

¿Cuándo es inútil?

Tornado es bueno para manejar una gran cantidad de 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 cuando maneja muchas solicitudes. El procesamiento asíncrono facilita el desacoplamiento funcional y el acceso a datos compartidos. Eso funciona muy bien con un diseño sin estado como REST u otras arquitecturas orientadas a servicios . Tampoco tiene que ocuparse tanto de hilos o procesos de desove con la sobrecarga inherente y puede salvar algunos de los problemas de bloqueo / IPC.

Por otro lado, Tornado no marcará una gran diferencia si su servidor de datos y / o back-end y / o el almacén de datos tarda mucho tiempo en procesar las solicitudes. Ayuda a hacer 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.