web-dev-qa-db-fra.com

Tornado remplace-t-il Django ou sont-ils complémentaires les uns des autres?

J'ai plusieurs questions sur Tornado et d'autres frameworks web.

1) Tornado prétend être un serveur Web (non bloquant, donc très performant), donc certaines personnes ont dit qu'il ne joue pas le rôle de Django --ie, ils disent que la tornade n'est pas un framework web.

Cependant, il fournit un framework web je pense ( http://www.tornadoweb.org/documentation#main-modules ) - de cette façon, il semble remplacer Django comme framework de développement web.

Ma compréhension ci-dessus est-elle correcte?

2) Normalement, plusieurs Tornados sont installées derrière Nginx. Tomcat est également normalement installé derrière le serveur Web Apache. Puis-je dire que Tornado joue exactement le même rôle que Tomcat pour Java serveur Web? Si la réponse est oui, alors Tornado IS un framework Web).

3) J'ai lu un article disant d'utiliser Tornado et Django ensemble, comme http://www.jeremybowers.com/blog/post/3/on-deploying-tornado- web-server-framework / , mais j'ai lu un article en ligne affirmant que "si vous utilisez Django, vous perdez l'asynchrone de Tornado", est-ce vrai ou faux? Une question connexe cependant, si Tornado est lui-même un site Web comme je l'ai dit dans 1), pourquoi les gens prennent la peine d'utiliser Django du tout? (pour aboutir au plugin?)

Quelqu'un peut-il me donner une introduction 101?

48
chen

Pour répondre à la question,

  • NON, Tornado ne remplace pas Django. C'est une alternative.

  • OUI, ils sont complémentaires mais pas dans le même processus (*)

J'utiliserais Django quand c'est un gros effort d'équipe et/ou doit fonctionner sur une base de données SQL.

J'utiliserais Tornado pour tout le reste. C'est à dire. projets personnels, applications liées à WebSocket, applications qui utilisent un backend NoSQL.

(*) ne vous embêtez pas à exécuter Django à l'intérieur de la tornade ou l'inverse, sauf si vous avez vraiment une forte exigence pour cela.

35
Peter Bengtsson
  1. Tornado est un serveur web et un framework web par la plupart des définitions, mais c'est un framework assez minimal (comparé à Rails ou Django). Les modules Tornado sont faiblement couplés, il est donc possible d'utiliser uniquement le composant serveur Web (ou même juste le niveau inférieur IO). Comparé à Django, il y a beaucoup de domaines où Tornado n'a pas autant de fonctionnalités. Par exemple, il n'y a pas vraiment d'abstraction de modèle dans Tornado, vous devez lancer la vôtre.

  2. Lorsque vous exécutez une application Tornado derrière Nginx, c'est votre application qui s'exécute - Nginx n'y sert que de proxy. Je crois que Tomcat est un serveur d'applications, distinct de votre application. Je n'appellerais pas Tomcat un framework web.

  3. Django n'est pas asynchrone, donc généralement votre application se bloque lors de l'utilisation des composants Django. Ce n'est peut-être pas un gros problème, cela dépend de ce que vous faites. Les développeurs de Tornado ont déclaré (en paraphrasant fortement) que pour la plupart des applications, le plus gros gain vient de ne pas bloquer en attendant le client, c'est-à-dire le navigateur Web. Le blocage sur la base de données, par exemple, n'est pas un gros problème si vous gardez vos requêtes rapides.

Il y a beaucoup d'avantages et d'inconvénients pour les deux Django et Tornado, et il existe de nombreuses alternatives aux deux - ce n'est certainement pas seulement un choix entre les deux. Voici un très liste rapide des raisons pour lesquelles vous voudrez peut-être utiliser Django cependant:

Avantages pour Django:

  • c'est une pile plus complète (les pages d'administration par exemple sont très faciles à implémenter)
  • c'est beaucoup plus établi (plugins, tutoriels, etc.)
  • c'est mieux documenté
  • son ORM est très sympa
27
Cole Maclean