it-swarm.com.de

Warum Tornado und Flask zusammen verwenden?

Soweit ich weiß, ist Tornado ein Server und ein Framework in einem. Es scheint mir, dass das Verwenden von Flask und Tornado zusammen wie das Hinzufügen einer weiteren Abstraktionsebene (mehr Overhead) ist. Warum verwenden die Leute Flask und Tornado zusammen, was sind das? die Vorteile?

35
3k-

Laut diese Frage liegt es daran, dass Flask blockiert und Tornado nicht blockiert.

Wenn man Tornado als WSGI-Server und Flask für URL-Routing + Templates verwendet, sollte es keinen Overhead geben. Bei diesem Ansatz verwenden Sie nicht den Webserver von Flask Es gibt also keine zusätzliche Abstraktionsebene.

Wenn Sie jedoch Flask nur für die Vorlagen verwenden, können Sie Tornado mit Jinja2 verwenden. Dies ist die Vorlagen-Engine, die Flask verwendet .

52

Ich dachte immer, dass es dumm ist, Flask & Tornado zusammen zu verwenden, aber es macht tatsächlich Sinn. Es erhöht die Komplexität, ich würde es vorziehen, nur Tornado zu verwenden, aber wenn Sie mit Flask verbunden sind, dann funktioniert dieses Setup.

Flask ist (angeblich) sehr gut zu bedienen und einfacher als Tornado. Allerdings Flask benötigt einen WSGI-Server für die Produktion (oder FCGI, aber das ist komplizierter). Tornado lässt sich ganz einfach als WSGI-Server einrichten:

from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from yourapplication import app

http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000)
IOLoop.instance().start()

In dieser Situation muss sich der Entwickler nur um die Flask App kümmern. Tornado fungiert nur als Server.

Es ist auch möglich, einige Anfragen (z. B. Websockets, die nicht mit WSGI kompatibel sind) mit Tornado zu bearbeiten und dennoch den Großteil Ihrer Arbeit in Flask zu erledigen. Theoretisch erhalten Sie die Einfachheit von Flask mit der asynchronen Leistung von Tornado.

17
Cole Maclean

anstatt Apache als Server zu verwenden, verwenden Sie Tornado (natürlich als Sperrserver aufgrund der Synchronität von WSGI).

2
Abdelouahab Pp

Verwenden Sie jede für das, was besser ist, aber berücksichtigen Sie, dass der Mix nicht immer die gewünschten Leistungssteigerungen erzielt.

In diesem Benchmark https://Gist.github.com/andreif/6088558 müssen Sie das Beispiel an Ihren Hauptanwendungsfall anpassen, wenn Sie beispielsweise fragen, welche Kombination von Frameworks schneller ist. In diesem Beispiel liefern flask + tornado nicht die erwarteten Leistungssteigerungen.

0
Rogelio