Tornado es & # 8220; un marco de servidor web relativamente simple y sin bloqueo escrito en Python & # 8221; ¿puede explicar algo lo que eso significa?

StackOverflow https://stackoverflow.com/questions/1419624

  •  07-07-2019
  •  | 
  •  

Pregunta

Esta es probablemente una pregunta estúpida, pero ¿qué es exactamente un "servidor web sin bloqueo"? Todos los servidores web son técnicamente sin bloqueo, ¿no es así? de lo contrario, ¿cómo podrían manejar conexiones simultáneas? Apache2 logra esto usando una combinación de fork () y pthreads. ¿En qué se diferencian exactamente Tornado (y Twisted también)? ¿Simplemente configuran un montón de sockets en modo sin bloqueo, crean una lista FD (o equivalente) y luego repiten eso con una gran llamada select () sys?

¿Dónde usaría un marco como estos, y qué ventajas pueden darle sobre Apache2 (u otros servidores populares)? Gracias

¿Fue útil?

Solución

Este artículo en EventMachine también puede darte una pista:

  

Sumergido en la tradición de la bifurcación /   servidores web roscados me encontré   bastante sorprendido cuando me uní a uno de   los proyectos de investigación en la universidad de   Waterloo hace un par de años: nosotros   estaban comparando diferentes servidores web   arquitecturas, y los mejores artistas fueron   todos los servidores controlados por eventos.

     

Mientras molestaba a todos con preguntas,   Rápidamente me di cuenta de por qué, en un   ambiente con cientos de miles   solicita un segundo, bifurcación y contexto   conmutación asociada con hilo   la gestión se vuelve prohibitiva   caro (tenedor es peor desempeño, como   hace una copia de memoria en el padre   proceso cada vez). Mientras que por   comparación, un apretado y altamente   Event-loop optimizado realmente brilla   cuando se trata de rendimiento bajo   cargas pesadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top