当前位置:首页 > Python > 正文

Python Tornado启动与配置完全指南 | 从入门到实战

Python Tornado启动与配置完全指南

Tornado是一个强大的Python Web框架和异步网络库,特别适合处理长连接和实时服务。本教程将详细介绍如何安装、配置和启动Tornado应用。

一、安装Tornado

使用pip安装最新版Tornado:

pip install tornado

二、基本Tornado应用结构

一个最简单的Tornado应用包含以下组件:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, Tornado!")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    print("Server started at http://localhost:8888")
    tornado.ioloop.IOLoop.current().start()

三、启动Tornado服务器的多种方式

1. 基本启动方式

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

2. 使用HTTPS启动

if __name__ == "__main__":
    app = make_app()
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(443)
    tornado.ioloop.IOLoop.current().start()

3. 多进程模式启动

if __name__ == "__main__":
    app = make_app()
    server = tornado.httpserver.HTTPServer(app)
    server.bind(8888)
    server.start(0)  # 0表示根据CPU核心数创建子进程
    tornado.ioloop.IOLoop.current().start()

四、关键配置选项

应用配置

app = tornado.web.Application(
    handlers=[(r'/', MainHandler)],
    debug=True,               # 开启调试模式
    autoreload=True,          # 自动重载代码变更
    cookie_secret="your_secret_key",  # Cookie加密密钥
    template_path="templates",        # 模板目录
    static_path="static",             # 静态文件目录
    xsrf_cookies=True,        # 开启XSRF保护
    compress_response=True,    # 开启响应压缩
)

服务器配置

server = tornado.httpserver.HTTPServer(
    app,
    ssl_options={           # SSL配置
        "certfile": "/path/to/cert.pem",
        "keyfile": "/path/to/key.pem",
    },
    max_buffer_size=104857600,  # 最大请求大小(100MB)
    xheaders=True,          # 支持代理头部
)

五、高级配置技巧

1. 自定义日志配置

from tornado.log import enable_pretty_logging
enable_pretty_logging()

# 自定义日志格式
logger = logging.getLogger("tornado.application")
logger.setLevel(logging.INFO)

2. 配置路由规则

app = tornado.web.Application([
    (r"/", MainHandler),
    (r"/user/([0-9]+)", UserHandler),
    (r"/static/(.*)", tornado.web.StaticFileHandler, {"path": "/var/www/static"}),
])

3. 使用配置文件

创建config.py

SETTINGS = {
    "debug": False,
    "autoreload": False,
    "cookie_secret": "your_production_secret",
    "template_path": "/opt/app/templates",
}

在应用中导入配置:

import config
app = tornado.web.Application(handlers, **config.SETTINGS)

六、生产环境部署

使用Nginx反向代理

server {
    listen 80;
    server_name yourdomain.com;
    
    location / {
        proxy_pass http://127.0.0.1:8888;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    
    location /static/ {
        alias /path/to/your/static/files/;
        expires 30d;
    }
}

使用Supervisor管理进程

[program:tornado_app]
command=python /path/to/your/app.py
directory=/path/to/your/app
autostart=true
autorestart=true
redirect_stderr=true
user=www-data
environment=PYTHONPATH="/path/to/your/app"

总结

Tornado是一个高性能的Python Web框架,特别适合需要处理大量并发连接的应用。本文介绍了:

  • Tornado的基本安装和项目结构
  • 多种启动方式(单进程、多进程、HTTPS)
  • 关键配置选项及其作用
  • 高级配置技巧(日志、路由、配置文件)
  • 生产环境部署方案

掌握这些知识后,您就可以构建并部署高性能的Tornado应用了!

发表评论