Frage Wann und wie verwende ich Tornado? Wann ist es nutzlos?


Ok, Tornado ist nicht blockierend und ziemlich schnell und es kann viele stehende Anfragen leicht verarbeiten.

Aber ich denke, es ist keine Wunderwaffe, und wenn wir blind auf Django oder einer anderen Seite mit Tornado laufen, wird es keinen Leistungsschub geben.

Ich konnte keine umfassende Erklärung dafür finden, also frage ich hier:

  • Wann sollte Tornado verwendet werden?
  • Wann ist es nutzlos?
  • Was sollte bei der Verwendung berücksichtigt werden?
  • Wie können wir machen? ineffizient Website mit Tornado?
  • Es gibt einen Server und ein Webframework. Wann sollten wir das Framework verwenden und wann können wir es durch ein anderes ersetzen?

75
2017-11-18 08:29


Ursprung


Antworten:


Es gibt einen Server und ein Webframework. Wann sollten wir das Framework verwenden und wann können wir es durch ein anderes ersetzen?

Diese Unterscheidung ist ein wenig verschwommen. Nur wenn Sie statische Seiten bedienen, würden Sie einen der schnellen Server wie lighthttpd verwenden. Ansonsten bieten die meisten Server eine unterschiedliche Komplexität des Frameworks für die Entwicklung von Webanwendungen. Tornado ist ein gutes Web-Framework. Twisted ist noch leistungsfähiger und gilt als ein guter Netzwerkrahmen. Es hat Unterstützung für viele Protokolle.

Tornado und Twisted sind Frameworks, die nicht-blockierende, asynchrone Web- / Netzwerk-Anwendungsentwicklung unterstützen.

Wann sollte Tornado verwendet werden?   Wann ist es nutzlos?   Was sollte bei der Verwendung berücksichtigt werden?

Async / Non-Blocking I / O funktioniert sehr gut, wenn es I / O-intensiv und nicht rechenintensiv ist. Die meisten Web- / Netzwerkanwendungen passen gut zu diesem Modell. Wenn Ihre Anwendung eine bestimmte rechenintensive Aufgabe erfordert, muss sie an einen anderen Dienst delegiert werden, der damit besser umgehen kann. Während Tornado / Twisted die Arbeit eines Webservers erledigen kann, reagiert er auf Webanfragen.

Wie können wir mit Tornado eine ineffiziente Website erstellen?

  1. Machen Sie irgendeine rechenintensive Aufgabe
  2. Führen Sie Blockierungsvorgänge ein

Aber ich denke, es ist keine Wunderwaffe, und wenn wir blind auf Django oder einer anderen Seite mit Tornado laufen, wird es keinen Leistungsschub geben.

Leistung ist normalerweise ein Merkmal der vollständigen Webanwendungsarchitektur. Sie können die Leistung mit den meisten Web-Frameworks senken, wenn die Anwendung nicht ordnungsgemäß entwickelt wurde. Denken Sie über Caching, Load Balancing etc. nach

Tornado und Twisted bieten eine angemessene Leistung und eignen sich gut zum Erstellen einer sehr performanten Webanwendung. Sie können die Testimonials für Twisted und Tornado überprüfen, um zu sehen, was sie können.


41
2017-11-18 10:27



Es tut mir leid, dass ich eine alte Frage beantwortet habe, aber ich bin auf dieses Problem gestoßen und habe mich gefragt, warum es nicht mehr Antworten gegeben hat. Um Bart Js Frage zu beantworten:

Ich möchte RSS-Feeds in der Tornado-Anwendung analysieren. Würden Sie das als rechenintensiv bezeichnen?

Nun, das hängt davon ab, was für ein Parsing du machst und auf welcher Hardware :) Lange Zeit ist eine lange Zeit. Wenn deine App also mehr als eine halbe Sekunde braucht, wird es schlapp aussehen - profiliere deine App.

Der Schlüssel zu schnellen Systemen ist eine großartige Architektur, nicht so sehr die Besonderheiten wie zB das verwendete Framework (Twisted, Tornado, Apache + PHP). Tornado hat einen asynchronen Bearbeitungsstil und das ist meiner Meinung nach sehr viel. Node.js, Twisted und Yaws sind Beispiele für andere asynchrone Webserver, die aufgrund eines leichten Ansatzes und asynchronen Verarbeitungsstils sehr gut skalierbar sind.

Damit:

Wann sollte Tornado verwendet werden?

Wann ist es nutzlos?

Tornado eignet sich gut für die Verarbeitung einer großen Anzahl von Verbindungen, da es auf einen eingehenden Client antworten, einen Anforderungshandler senden und nicht über diesen Client nachdenken kann, bis der Ergebnisrückruf in die Ereigniswarteschlange übernommen wurde. Daher sollte Tornado für diese spezifische Qualität verwendet werden, wenn Sie bei der Verarbeitung vieler Anfragen gut skalieren möchten. Die Async-Verarbeitung ermöglicht eine funktionale Entkopplung und einen gemeinsamen Datenzugriff. Das schwingt sehr gut mit staatenlosem Design SICH AUSRUHEN oder andere Serviceorientierte Architekturs. Sie müssen sich auch nicht so sehr mit dem Launch von Threads oder Prozessen mit dem inhärenten Overhead befassen, und Sie können einige der Sperr- / IPC-Probleme speichern.

Tornado macht dagegen keinen großen Unterschied, wenn Ihr Backend und / oder Ihr Datenspeicher viel Zeit benötigt, um die Anfragen zu bearbeiten. Es hilft, Concurrent Designs und insbesondere Web-Services zu erstellen. Die gleichzeitige Architektur erleichtert die Skalierung Ihres Designs und die Minimierung der Kopplung. Das ist zumindest meine Erfahrung mit Tornado.


5
2017-09-17 22:40