tornadoweb

tornado: Build Python Web Apps and Async Network Services

Tornado is a Python web framework and asynchronous networking library for services that need to handle long-lived connections. It suits teams building WebSocket or long-polling applications, but its recent development is concentrated among a small number of contributors.

Stars
22.2k
Forks
5.6k
Stars, last 8 days
-4
Last commit
1 day ago
Contributors
100+

Our take

Activeregular commits

Health score

63/100

How it is scored
Activity
53
Community
63
Issues
61
Pull requests
74

-4 stars in the last 8 days

  • More contributors than 77% of the projects we track
  • Merges more pull requests than 77% of the projects we track

Tornado is an actively maintained Python option for connection-heavy web services, though teams should account for concentrated contributor ownership and a lack of recent releases.

Good fit if

  • Your Python application needs WebSockets, long polling, or other long-lived connections.
  • You want web request handling and asynchronous networking in one library.
  • Your team is comfortable adopting Apache-2.0 software and following the project’s ongoing commits rather than relying on a recent release.

Look elsewhere if

  • You require recent version releases as a condition of adoption, since there has been no release in over a year.
  • You need project development to be broadly distributed, since most contributions come from one person.
  • Your application does not need asynchronous networking or long-lived connections and Tornado’s capabilities would not address a specific need.
All health signals
Last commit2026-10-10 (1 day ago)
Commits, last 90 days100+
Releases, last 12 months0
Contributors100+ (top contributor: 81% of commits)
Issues closed, last 90 days7+ (typically closed in 3 days)
Pull requests merged, last 90 days52 (typically merged in 0 days)
Project age17 years

Checked on 2026-10-12 with the GitHub API.

Overview

Tornado combines a Python web framework with an asynchronous networking library. Its non-blocking I/O is designed for applications that keep connections open, such as chat services, long polling, and WebSocket applications.

It can also serve as a straightforward web framework for conventional request handlers. It makes sense when a Python service needs both web routing and support for long-lived connections.

Key Features

  • Defines web applications with request handlers and URL routes.
  • Uses non-blocking network I/O for asynchronous services.
  • Supports applications built around long-lived user connections.
  • Targets use cases including WebSockets and long polling.
  • Provides an asyncio-based application example.

Use Cases

  • A Python team building a chat service can use its asynchronous networking and WebSocket support for persistent client connections.
  • Developers implementing long polling can use a server designed for connections that remain open while awaiting updates.
  • A team creating a conventional Python web endpoint can use its request-handler and routing model.

What you need

Detected in the repository

  • Python (from pyproject.toml)
  • Automated checks on GitHub Actions

License in plain words

Apache-2.0permissive

  • Commercial use: yes
  • Modify and redistribute: yes
  • You must keep: the license, the NOTICE file and a note of your changes
  • Share your changes: no
  • Includes an explicit patent grant from the contributors:

A summary, not legal advice: the LICENSE file is what applies.

Getting Started

Use Python and follow the README and official documentation for setup and application details. The README includes a minimal request-handler example.

Alternatives

  • autobahn-python: Autobahn focuses on WebSocket and WAMP clients and servers, while Tornado also provides a general-purpose web framework and networking library.
  • channels: Channels adds WebSockets and long-polling to Django through ASGI, while Tornado provides its own web framework and asynchronous networking stack.
ProjectLanguageLicenseStarsStatus
tornadoPythonApache-2.022.2kActive
autobahn-pythonPython–2.5kActive
channelsPythonBSD-3-Clause6.4kMaintained

Considerations

The project is active, with regular recent commits and merged pull requests, and reported issue closures are handled quickly. However, recent work is highly concentrated among one contributor, and there have been no releases in over a year. The supplied requirements identify Python and CI, but do not identify a test setup. Tornado uses the Apache-2.0 license, so review its terms for your distribution and use.

Found this useful?

Share it with someone who would like tornado.

Comparisons