Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed.
Go to file
Ben Darnell 6ae55a334f
Merge pull request #2646 from m-burst/patch-1
Speedup headers parsing
2019-05-04 14:24:05 -04:00
demos Fix ResourceWarning: unclosed file 2019-01-05 22:15:01 +01:00
docs docs: Clarify platform support and add not-on-windows notes 2019-03-23 13:57:41 -04:00
maint Speedup headers parsing 2019-05-04 11:16:18 +03:00
tornado Speedup headers parsing 2019-05-04 11:16:18 +03:00
.coveragerc Add .coveragerc for test coverage reporting. 2012-01-21 14:10:00 -08:00
.flake8 *: Adopt black as code formatter 2018-10-06 23:03:26 -04:00
.gitignore Add .mypy_cache to gitignore 2016-04-24 12:17:21 -04:00
.travis.yml travis-ci tests: always use dist xenial 2019-03-01 17:11:33 -05:00
LICENSE Add top level LICENSE file 2013-08-22 19:28:35 -04:00
MANIFEST.in setup: Blacken the file 2018-10-06 23:13:06 -04:00
README.rst Merge pull request #1544 from gitter-badger/gitter-badge 2016-07-12 22:52:05 -04:00
appveyor.yml build: Add Python 3.7 to tox and appveyor configs 2018-07-10 21:13:32 -04:00
codecov.yml Disable intrusive codecov features 2016-05-21 18:51:33 -04:00
readthedocs.yml docs: Use python 3.7 via conda for readthedocs builds 2018-12-29 19:57:39 -05:00
runtests.sh Remove some vestigial references to 2to3. 2014-01-19 18:55:53 -05:00
setup.cfg websocket: Add type annotations 2018-09-30 22:20:00 -04:00
setup.py setup: Don't repeat version number in setup.py 2019-01-01 22:43:10 -05:00
tox.ini Merge pull request #2530 from bdarnell/requirements 2018-11-02 13:26:34 -04:00

README.rst

Tornado Web Server
==================

.. image:: https://badges.gitter.im/Join%20Chat.svg
   :alt: Join the chat at https://gitter.im/tornadoweb/tornado
   :target: https://gitter.im/tornadoweb/tornado?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge

`Tornado <http://www.tornadoweb.org>`_ is a Python web framework and
asynchronous networking library, originally developed at `FriendFeed
<http://friendfeed.com>`_.  By using non-blocking network I/O, Tornado
can scale to tens of thousands of open connections, making it ideal for
`long polling <http://en.wikipedia.org/wiki/Push_technology#Long_Polling>`_,
`WebSockets <http://en.wikipedia.org/wiki/WebSocket>`_, and other
applications that require a long-lived connection to each user.

Hello, world
------------

Here is a simple "Hello, world" example web app for Tornado:

.. code-block:: python

    import tornado.ioloop
    import tornado.web

    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("Hello, world")

    def make_app():
        return tornado.web.Application([
            (r"/", MainHandler),
        ])

    if __name__ == "__main__":
        app = make_app()
        app.listen(8888)
        tornado.ioloop.IOLoop.current().start()

This example does not use any of Tornado's asynchronous features; for
that see this `simple chat room
<https://github.com/tornadoweb/tornado/tree/stable/demos/chat>`_.

Documentation
-------------

Documentation and links to additional resources are available at
http://www.tornadoweb.org