Tornado (Webserver)
Tornado ist ein freier, nicht blockierender Webserver sowie ein einfaches Mikro-Webframework in Python.[2] Die Entwicklung begann bei FriendFeed, nach der Übernahme von FriendFeed durch Facebook[3] wurde Tornado unter einer Open-Source-Lizenz veröffentlicht[4][5].
Tornado | |
---|---|
Basisdaten | |
Entwickler | Facebook, Bret Taylor |
Erscheinungsjahr | 2009 |
Aktuelle Version | 6.1.0[1] (30. Oktober 2020) |
Betriebssystem | plattformunabhängig |
Programmiersprache | Python |
Kategorie | Webserver, Webframework |
Lizenz | Apache-Lizenz 2.0 |
www.tornadoweb.org |
Leistung
Der Tornado-Webserver nutzt Wartezeiten, zum Beispiel beim Empfang von Daten, indem er sich währenddessen weiteren Aufgaben zuwendet (unter Linux mit epoll, unter BSD mit kqueue)[6]. Dieses nicht blockierende Verhalten ermöglicht es, eine sehr große Zahl von Anfragen gleichzeitig abzuwickeln. Die Entwicklung erfolgte mit dem Hintergrund des C10K-Problems[7] und Messungen ergeben über 8.000 bearbeitete Anfragen pro Sekunde.
Server | Setup | Anfragen pro Sekunde |
---|---|---|
Tornado | Mit der geläufigen produktiven Umsetzung von 4 Tornadoinstanzen und nginx als Proxy. | 8213 |
Tornado | Standalone | 3353 |
Django | Apache/mod wsgi | 2223 |
web.py | Apache/mod_wsgi | 2066 |
CherryPy | Standalone | 785 |
Module
Tornado stellt Mixins für die Authentifizierungssysteme OpenID und OAuth zur Verfügung, mit vereinfachter Anbindung an die Authentifizierungsschnittstellen von Google, Facebook Connect und Twitter.
Die asynchrone Bearbeitung von Anfragen war von Anbeginn Kernelement von Tornado. Seit Python 3.5 werden hierfür statt eines eigenen Moduls die Python-Sprachelemente async def und await genutzt[9]. Eine Beispielanwendung zeigt die Verwendung im FriendFeeds Chatsystem.
Daneben stehen die gängigen Komponenten eines Mikro-Webframeworks zur Verfügung:
- Verwaltung von Cookies (mit Möglichkeit diese zu signieren um ihre Authentizität zu überprüfen) und Sessions
- Templatesystem
- Cross-Site-Scripting-Schutz
- Support für Mehrsprachigkeit
Weblinks
- Verwendung in Jupyter Notebooks
Einzelnachweise
- Release 6.1.0. 30. Oktober 2020 (abgerufen am 17. November 2020).
- Hauptseite des Tornado Projects (englisch) Abgerufen am 5. April 2013.
- Facebook Acquires FriendFeed (englisch) 10. September 2009. Abgerufen am 22. Oktober 2013.
- Liste der OpenSource Projecte von Facebook (englisch) Abgerufen am 5. April 2013.
- Talking about Tornado (englisch) 25. September 2009. Abgerufen am 22. Oktober 2013.
- Installationshinweis zu Tornado (englisch) Abgerufen am 5. April 2013.
- Dory, Michael, Adam Parrish, and Brendan Berg. Introduction to Tornado. O’Reilly Media, 2012.
- Tornado: Facebook’s Real-Time Web Framework for Python (englisch) 11. September 2009. Archiviert vom Original am 23. Dezember 2009. Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis. Abgerufen am 22. Oktober 2013.
- https://www.tornadoweb.org/en/stable/guide/structure.html#asynchronous-handlers