web-dev-qa-db-fra.com

Quand et comment utiliser Tornado? Quand est-ce inutile?

Ok, Tornado est non bloquant et assez rapide et il peut gérer un grand nombre de demandes en attente facilement.

Mais je suppose que ce n'est pas une solution miracle et si nous exécutons aveuglément Django ou tout autre site avec Tornado, cela n'améliorera pas les performances.

Je n'ai pas pu trouver d'explication complète à ce sujet, alors je la pose ici:

  • Quand utiliser Tornado?
  • Quand est-ce inutile?
  • Lors de son utilisation, que faut-il prendre en compte?
  • Comment pouvons-nous faire inefficace site en utilisant Tornado?
  • Il y a un serveur et un webframework. Quand devrions-nous utiliser le framework et quand pouvons-nous le remplacer par un autre?
80
Vladimir Sidorenko

Il y a un serveur et un webframework. Quand devrions-nous utiliser le framework et quand pouvons-nous le remplacer par un autre?

Cette distinction est un peu floue. Seulement si vous servez des pages statiques, vous utiliserez l'un des serveurs rapides comme lighthttpd. Autrement, la plupart des serveurs offrent une complexité variable de framework pour développer des applications web. Tornado est un bon framework web. Twisted est encore plus capable et est considéré comme un bon cadre de réseautage. Il prend en charge de nombreux protocoles.

Tornado et Twisted sont des frameworks qui prennent en charge le développement d'applications web/réseau asynchrones non bloquantes.

Quand utiliser Tornado? Quand est-ce inutile? Lors de son utilisation, que faut-il prendre en compte?

De par sa nature même, les E/S asynchrones/non bloquantes fonctionnent très bien lorsqu'elles sont intensives en E/S et non en calculs. La plupart des applications Web/réseau conviennent bien à ce modèle. Si votre application requiert l'exécution de certaines tâches de calcul intensif, elle doit être déléguée à un autre service qui peut mieux la gérer. Tornado/Twisted peut faire le travail de serveur Web, répondant aux demandes Web.

Comment rendre le site inefficace en utilisant Tornado?

  1. Faites n'importe quelle tâche de calcul intensif
  2. Introduire des opérations de blocage

Mais je suppose que ce n'est pas une solution miracle et si nous exécutons aveuglément Django ou tout autre site avec Tornado, cela n'améliorera pas les performances.

Les performances sont généralement une caractéristique de l'architecture complète d'une application Web. Vous pouvez réduire les performances avec la plupart des frameworks Web, si l'application n'est pas conçue correctement. Pensez à la mise en cache, à l'équilibrage de charge, etc.

Tornado et Twisted offrent des performances raisonnables et conviennent à la création d'une application Web très performante. Vous pouvez consulter les témoignages à la fois tordus et tornades pour voir de quoi ils sont capables.

45
pyfunc

Je suis désolé d'avoir répondu à une vieille question, mais je suis tombé sur celle-ci et je me suis demandé pourquoi elle n'avait pas plus de réponses. Pour répondre à la question de Bart J:

Je voudrais analyser les flux RSS dans l'application Tornado. Considérez-vous cela comme assez intensif en calcul?

Eh bien, cela dépend du type d'analyse que vous faites et de quel matériel :) Le temps est long, donc si votre application met plus d'une demi-seconde à répondre, cela vous semblera lent - profilez votre application.

La clé des systèmes rapides est une excellente architecture, pas tant les spécificités que par exemple le framework que vous utilisez (Twisted, Tornado, Apache + PHP). Tornado a un style de traitement asynchrone et c'est vraiment à cela que je pense en grande partie. Node.js, Twisted et Yaws sont des exemples d'autres serveurs Web asynchrones qui évoluent très bien en raison d'une approche légère et d'un style de traitement asynchrone.

Donc:

Quand utiliser Tornado?

Quand est-ce inutile?

Tornado est bon pour gérer un grand nombre de connexions, car il peut répondre à un client entrant, envoyer un gestionnaire de requêtes et ne pas penser à ce client jusqu'à ce que le résultat-rappel soit poussé dans la file d'attente des événements. Donc, pour cette qualité spécifique, Tornado doit être utilisé lorsque vous souhaitez bien évoluer lors du traitement de nombreuses demandes. Le traitement asynchrone facilite le découplage fonctionnel et l'accès aux données partagées. Cela oscille vraiment bien avec une conception sans état comme RESTE ou autre Service Oriented Architecture s. Vous n'avez pas non plus à gérer autant les threads ou les processus de génération avec la surcharge inhérente et vous pouvez économiser certains des problèmes de verrouillage/IPC.

Tornado ne fera pas beaucoup de différence, en revanche, si votre backend et/ou magasin de données prend beaucoup de temps pour traiter les demandes. Il aide à faire des designs simultanés et des services Web en particulier. L'architecture simultanée facilite la mise à l'échelle de votre conception et maintient le couplage bas. C'est du moins mon expérience avec Tornado.

6
Morten Jensen