Our take
Activeregular commits- 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 commit | 2026-10-10 (1 day ago) |
|---|---|
| Commits, last 90 days | 100+ |
| Releases, last 12 months | 0 |
| Contributors | 100+ (top contributor: 81% of commits) |
| Issues closed, last 90 days | 7+ (typically closed in 3 days) |
| Pull requests merged, last 90 days | 52 (typically merged in 0 days) |
| Project age | 17 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.
| Project | Language | License | Stars | Status |
|---|---|---|---|---|
| tornado | Python | Apache-2.0 | 22.2k | Active |
| autobahn-python | Python | – | 2.5k | Active |
| channels | Python | BSD-3-Clause | 6.4k | Maintained |
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.