Outre le fait que node.js est écrit en JS et Tornado en Python, quelles sont les différences entre les deux? Ils sont tous les deux des serveurs Web asynchrones non bloquants, non? Pourquoi choisir l'un plutôt que l'autre en plus de la langue?
Le principal avantage de node.js est que toutes ses bibliothèques sont asynchrones donc vous n'avez pas à vous soucier du blocage. Il existe des bibliothèques asynchrones pour mysql, postgres, redis, etc. Tout est asynchrone par défaut.
Python a une bibliothèque pour tout - mais la plupart de ces bibliothèques ne sont pas asynchrones. Afin de profiter de la tornade (et de ne pas bloquer le processus), des bibliothèques spéciales sont nécessaires (par exemple, vous ne pouvez pas simplement 'pip installer redis' et l'utiliser, vous aurez besoin de quelque chose comme brukva ), et il y a beaucoup moins de bibliothèques de tornade que de bibliothèques node.js. Il n'y a pas de pilote async mysql tornado disponible pour le moment, par exemple (ou du moins je ne suis pas au courant).
Mais vous pouvez toujours utiliser de nombreuses bibliothèques python avec tornado (celles qui ne font pas d'E/S), et la communauté tornado augmente et comble les lacunes.
Il est plus facile d'écrire une application en utilisant node.js qu'en utilisant tornado dans mon expérience. Personnellement, je suis passé à tornado de node.js car il s'intègre mieux à l'infrastructure existante de mon projet python (intégration entre Django site proposant des pages html et serveur tornado fournissant les fonctionnalités en temps réel étaient assez indolores).
Comme Rich Bradshaw le fait remarquer Node.js est écrit en JS, ce qui signifie que vous pouvez conserver le front end et le back end dans la même langue et éventuellement partager une base de code. Pour moi, c'est un énorme avantage potentiel de Node.js . Node est également livré avec plus de bibliothèques asynchrones hors de la boîte, il semble.
V8 devrait rendre JS plus rapide que Python du moins c'est ce que les benchmarks semblent suggérer , mais cela peut ne pas avoir beaucoup d'importance, car les deux Node.js et Tornado (et la plupart des autres frameworks Web d'ailleurs) utilisent des wrappers pour les bibliothèques natives. de la bibliothèque standard Python est écrite en C ou peut être remplacée par une alternative plus rapide, ce qui atténue encore plus les différences potentielles.
Les services Web sont généralement liés aux E/S, ce qui signifie que nous passons du temps à attendre le magasin de données et à ne pas traiter les données. Cela rend la différence de vitesse synthétique entre JS et Python non pertinente dans de nombreuses applications.
node.js utilise V8 qui se compile en code Assembly, tornado ne le fait pas encore.
À part cela (qui ne semble pas vraiment faire de différence dans la vitesse), c'est l'écosystème. Préférez-vous le modèle d'événement de JS, ou la façon dont Python fonctionne? Êtes-vous plus heureux d'utiliser Python ou les bibliothèques JS?
Nodejs a également une intégration/implémentation transparente de websockets appelés Socket.io. Il gère les navigateurs prenant en charge les sockets - événements et a également une compatibilité de sondage vers l'arrière pour les navigateurs plus anciens. Le développement est assez rapide et nécessite un cadre de notification ou une programmation similaire basée sur les événements.
Je vous suggère d'aller avec NodeJS, s'il n'y a pas de préférence personnelle pour python. J'aime beaucoup Python beaucoup, mais pour asynchrone, je choisis Tornado plutôt que le nœud, et plus tard j'ai eu du mal à trouver un moyen de faire quelque chose, ou des bibliothèques avec support asynchrone (comme Cassandra a async dans les tests, mais nulle part je ne pourrais trouver le moyen d'utiliser cqlengine avec async. J'ai dû choisir Mongo car j'ai déjà dépassé la date limite). En termes de performances et async, Node far mieux que la tornade.