Tornado:Python异步Web框架完全指南
什么是Tornado
Tornado 是一个强大的Python异步Web服务器和Web框架,专为处理大量并发连接而设计。由FriendFeed团队(后被Facebook收购)开发,Tornado成为Python异步编程领域的先驱之一。
Tornado的核心哲学是使用非阻塞I/O和基于事件的架构。这使得单个进程可以同时处理数千个连接,成为构建高负载Web应用、聊天系统、实时应用和API服务的理想选择。
Tornado的核心特性与优势
异步架构
Tornado采用事件驱动编程模型,能够在单个线程中处理大量请求。这显著降低了上下文切换和内存管理的开销。
内置HTTP服务器
与许多其他框架不同,Tornado包含自己的HTTP服务器,无需额外组件(如WSGI)即可部署应用。
WebSocket支持
Tornado原生支持WebSocket连接,是构建交互式实时应用的绝佳选择。
与asyncio兼容
从5.0版本开始,Tornado完全兼容asyncio,可与其他Python异步库协同使用。
灵活的路由系统
Tornado提供强大的URL路由系统,支持正则表达式和参数传递。
内置模板引擎
框架包含自己的模板引擎,用于生成动态HTML页面。
安装与环境配置
安装Tornado
pip install tornado
如需使用额外功能,可安装以下扩展包:
# 用于MongoDB
pip install motor
# 用于PostgreSQL
pip install asyncpg
# 用于Redis
pip install aioredis
项目结构
推荐的Tornado项目结构如下:
project/
├── app.py # 主应用文件
├── handlers/ # 请求处理器
│ ├── __init__.py
│ ├── base.py
│ ├── auth.py
│ └── api.py
├── models/ # 数据模型
│ ├── __init__.py
│ └── user.py
├── templates/ # HTML模板
│ ├── base.html
│ ├── index.html
│ └── error.html
├── static/ # 静态文件
│ ├── css/
│ ├── js/
│ └── images/
├── config/ # 配置文件
│ ├── __init__.py
│ └── settings.py
└── requirements.txt # 项目依赖
创建第一个应用
基础示例
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("欢迎使用Tornado!")
class AboutHandler(tornado.web.RequestHandler):
def get(self):
self.write("关于我们")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
(r"/about", AboutHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
print("服务器已启动,访问 http://localhost:8888")
tornado.ioloop.IOLoop.current().start()
带参数的应用配置
import tornado.web
import tornado.ioloop
import os
class Application(tornado.web.Application):
def __init__(self):
handlers