Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed.
Go to file
Ben Darnell fa809ed123 autoreload: Don't close the IOLoop on reload
This was a last-ditch effort to close file descriptors that were not
marked as CLOEXEC. However, it was never complete (it didn't touch
file descriptors that were not registered on the IOLoop), and it can't
work with asyncio (which does not allow closing the IOLoop without
stopping it and unwinding the stack first). Since Tornado (and
hopefully all major libraries using the IOLoop) is careful about
setting CLOEXEC when needed, just get rid of the close.

Fixes #1543
2017-03-25 14:00:26 -04:00
demos docs: Demonstrate uploading and receiving files 2016-11-04 21:42:01 -04:00
docs Merge pull request #1957 from bdarnell/ws-ping 2017-02-25 17:35:22 -05:00
maint remove redundant with_statement feature 2017-03-07 12:07:06 +03:00
tornado autoreload: Don't close the IOLoop on reload 2017-03-25 14:00:26 -04:00
.coveragerc Add .coveragerc for test coverage reporting. 2012-01-21 14:10:00 -08:00
.gitignore Add .mypy_cache to gitignore 2016-04-24 12:17:21 -04:00
.travis.yml Add Python 3.6 support 2017-01-08 18:19:30 +02:00
LICENSE Add top level LICENSE file 2013-08-22 19:28:35 -04:00
MANIFEST.in setup: Ship LICENSE file in tarball 2017-02-20 14:59:03 -05:00
README.rst Merge pull request #1544 from gitter-badger/gitter-badge 2016-07-12 22:52:05 -04:00
appveyor.yml Verify extension build on appveyor 2015-09-30 00:01:08 -04:00
codecov.yml Disable intrusive codecov features 2016-05-21 18:51:33 -04:00
runtests.sh Remove some vestigial references to 2to3. 2014-01-19 18:55:53 -05:00
setup.py Add Python 3.6 support 2017-01-08 18:19:30 +02:00
tox.ini tox: Update some configs to use py36 2017-02-20 17:04:14 -05: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