” Nodejs no es un marco web y tornado no es un lenguaje de programación “. – Ravi
Por lo tanto, es probable que desee una combinación de diferentes características de comparación.
Comparado en términos de rendimiento , sin duda, nodejs es mucho mejor con razón obvia, motor V8. CPython y Pypy, ambos se retrasan desde nodejs cuando se trata de rendimiento puro.
Desde la perspectiva de la programación , Python es más maduro que Javascript. Por ejemplo, la necesidad básica de Clase y módulos surge cada vez que comienza a escribir código con más de 2-3 archivos. Python tiene clase completa, paquetes de soporte junto con muchos otros, mientras que en JS, parece parcheado con require / commonjs y creando clases con funciones (parece que el sacerdote Perl está bendiciendo nuevamente). Pero con ECMAScript evolucionado y refactorizado cada vez más en estos días, esto no sería un problema después de unos años .
La disponibilidad de bibliotecas para ambas plataformas también difiere. Python tiene una gran lista de bibliotecas, y muchas para el mismo propósito con un pequeño giro (eso también sucede con la comunidad de nodejs, pero aún no tanto, probablemente lo será en el futuro).
Legibilidad / Mantenibilidad: Tornado solía ser feo con el tipo de programación de devolución de llamada, ahora su rama 4.x está mejorando con el módulo gen. Esto significa que el flujo lógico ahora sería claro como la programación síncrona. La devolución de llamada, como la programación, es altamente ilegible y no se puede mantener, lo que puede ver con los códigos jQuery. Lo mismo sucede con muchas bibliotecas de NodeJs, hasta que admiten Promise like thing o evolucionan a Go like response, err = func () syntax. Esto hace que el desarrollo basado en nodejs sea demasiado feo demasiado pronto y demasiado rápido. Por lo tanto, elegir los marcos de nodo correctos y su enfoque es importante. Tornado acaba de salir de este infierno.
Bibliotecas: Tornado se trata de asíncrono, usarlo para WSGI sería una decisión incorrecta, en lugar de optar por Pyramid o Django. Pero si elige Tornado para su aplicación, y necesita muchas bibliotecas para su proyecto, sería una mala decisión. Más del 95% de las bibliotecas de Python no se preocupan por el soporte asíncrono, porque la cultura Python no fomentó el desarrollo de tipo asíncrono (dejando de lado Twisted). En NodeJS, casi todas las bibliotecas son asíncronas, porque su lema principal es asíncrono, ejecución de un solo hilo, integrado en el núcleo. Python acaba de comenzar a hornearlo en su núcleo y carece de bibliotecas para soportarlo.
Una última sugerencia que me gustaría agregar. El rendimiento del intérprete / VM no debe ser el criterio principal para optar por una plataforma, hasta que escriba mucho algo / lógica en el código. Por ejemplo, si su aplicación está sirviendo una página, para solicitudes individuales, debe responder a 10 consultas en DB con una respuesta promedio de 15 ms por consulta. Verá que se gastan 150 ms en consultar fuentes de datos externas (DB / Cache / Indexers) mientras que se gastan solo 2-3 ms en su propio código. Cuánta diferencia hará si opta por escribir el mismo código en C / C ++ de alto rendimiento que se ejecutará en 0,5 ms (menos del 1% de optimización).