What does it do?
Tornado is designed for websites that need to keep many connections open simultaneously, like a chat app where thousands of people are typing at once, rather than the usual quick ask-and-answer of a normal webpage. Most web tools open a connection, answer a request, then close it; Tornado keeps the line open and handles a huge number of them in parallel using one efficient process. That’s what makes it suited for live notifications, chat, and real-time dashboards. It grew out of a real product that needed exactly this kind of capability at scale.
See it in action
This code starts a small web server that greets visitors with “Hello, world!” and is built to keep many visitors’ connections open at the same time.
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world!")
app = tornado.web.Application([(r"/", MainHandler)])
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
Why would a non-developer care?
Anytime you see a live notification pop up or a chat message appear instantly without refreshing the page, that experience depends on tools built for sustained, simultaneous connections. Tornado was one of the earlier Python tools to make that kind of real-time behavior practical.
Real-world examples
Tornado was originally built inside FriendFeed, the real-time social aggregation site Facebook acquired in 2009 — Facebook then open-sourced it so other developers could use it too. Without frameworks built for long-held connections, live features like chat would rely on clunky page-refreshing tricks that feel noticeably slower to use.
Who uses it
Engineers building chat systems, real-time dashboards, and services that need to push updates to many users at once rather than waiting to be asked.
How it compares to alternatives
Tornado predates newer asyncio-based tools like aiohttp and FastAPI, and much of what it pioneered inspired that later async support built into Python itself. Teams building new real-time services today often reach for aiohttp or Starlette instead, but Tornado remains a stable, battle-tested option.
Fun fact
Tornado was open-sourced by Facebook in 2009 right after it acquired FriendFeed, making it one of the earliest large tech-company open-source releases of a Python web framework.