Tornado (web server)
- 1 min read
- 3 chapters
Related on Lably
Through Web server, Python (programming language) and Open-source software
Performance
Tornado is noted for its high performance. Its design enables handling a large number of concurrent connections (i.e., tries to solve the "C10k problem").
Sign in to keep reading
2 more chapters are free with a Lably account.
Modules
- An asynchronous MongoDB driver called Motor.
- CouchDB drivers called corduroy and trombi.
- Asynchronous driver for PostgreSQL wrapping psycopg called Momoko
Example
The following code shows a simple web application that displays "Hello World!" when visited:
<span id="mwKg"></span><span class="kn" id="mwKw">import</span> <span class="nn" id="mwLA">asyncio</span> <span class="kn" id="mwLQ">import</span> <span class="nn" id="mwLg">tornado.web</span> <span class="k" id="mwLw">class</span> <span class="nc" id="mwMA">MainHandler</span><span class="p" id="mwMQ">(</span><span class="n" id="mwMg">tornado</span><span class="o" id="mwMw">.</span><span class="n" id="mwNA">web</span><span class="o" id="mwNQ">.</span><span class="n" id="mwNg">RequestHandler</span><span class="p" id="mwNw">):</span> <span class="k" id="mwOA">def</span> <span class="nf" id="mwOQ">get</span><span class="p" id="mwOg">(</span><span class="bp" id="mwOw">self</span><span class="p" id="mwPA">):</span> <span class="bp" id="mwPQ">self</span><span class="o" id="mwPg">.</span><span class="n" id="mwPw">write</span><span class="p" id="mwQA">(</span><span class="s2" id="mwQQ">"Hello, world"</span><span class="p" id="mwQg">)</span> <span class="k" id="mwQw">def</span> <span class="nf" id="mwRA">make_app</span><span class="p" id="mwRQ">():</span> <span class="k" id="mwRg">return</span> <span class="n" id="mwRw">tornado</span><span class="o" id="mwSA">.</span><span class="n" id="mwSQ">web</span><span class="o" id="mwSg">.</span><span class="n" id="mwSw">Application</span><span class="p" id="mwTA">([(</span><span class="sa" id="mwTQ">r</span><span class="s2" id="mwTg">"/"</span><span class="p" id="mwTw">,</span> <span class="n" id="mwUA">MainHandler</span><span class="p" id="mwUQ">),])</span> <span class="k" id="mwUg">async</span> <span class="k" id="mwUw">def</span> <span class="nf" id="mwVA">main</span><span class="p" id="mwVQ">():</span> <span class="n" id="mwVg">app</span> <span class="o" id="mwVw">=</span> <span class="n" id="mwWA">make_app</span><span class="p" id="mwWQ">()</span> <span class="n" id="mwWg">app</span><span class="o" id="mwWw">.</span><span class="n" id="mwXA">listen</span><span class="p" id="mwXQ">(</span><span class="mi" id="mwXg">8888</span><span class="p" id="mwXw">)</span> <span class="k" id="mwYA">await</span> <span class="n" id="mwYQ">asyncio</span><span class="o" id="mwYg">.</span><span class="n" id="mwYw">Event</span><span class="p" id="mwZA">()</span><span class="o" id="mwZQ">.</span><span class="n" id="mwZg">wait</span><span class="p" id="mwZw">()</span> <span class="k" id="mwaA">if</span> <span class="vm" id="mwaQ">__name__</span> <span class="o" id="mwag">==</span> <span class="s2" id="mwaw">"__main__"</span><span class="p" id="mwbA">:</span> <span class="n" id="mwbQ">asyncio</span><span class="o" id="mwbg">.</span><span class="n" id="mwbw">run</span><span class="p" id="mwcA">(</span><span class="n" id="mwcQ">main</span><span class="p" id="mwcg">())</span>

