参考:https://www.w3cschool.cn/pytornado/
Python Tornado 框架的终极指南!_tornado框架-CSDN博客
安装一下tornada,pip install tornado
1:直接上手第一个程序
python">import tornado.ioloop
import tornado.web# 创建一个处理 HTTP 请求的类
class MainHandler(tornado.web.RequestHandler):# 当收到get请求时,相应"Hello, Tornado!"def get(self):self.write("Hello, Tornado!")if __name__ == "__main__":# 创建一个tornadaapp = tornado.web.Application([(r"/", MainHandler)]) # [ (r"/", MainHandler) ] 是一个路由列表,其中 r"/" 表示 URL 路径,MainHandler 是处理这些路径请求的处理器类。app.listen(8888) # 让应用程序监听本地服务器的端口 8888tornado.ioloop.IOLoop.current().start() # 启动 Tornado 的 I/O 循环,使服务器开始监听和处理请求
2 异步处理:
python">import tornado.ioloop
import tornado.web
import tornado.genclass AsyncHandler(tornado.web.RequestHandler):async def get(self):result = await self.asynchronous_operation()self.write(f"Result: {result}")async def asynchronous_operation(self):# 异步操作,例如数据库查询或API调用await tornado.gen.sleep(2)return "Async Operation Completed"if __name__ == "__main__":app = tornado.web.Application([(r"/async", AsyncHandler)])app.listen(8888)tornado.ioloop.IOLoop.current().start()
3:通过不同的路由处理不同的请求
python">import tornado.ioloop
import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):self.write("Hello, Tornado!")class AboutHandler(tornado.web.RequestHandler):def get(self):self.write("About Page")if __name__ == "__main__":app = tornado.web.Application([(r"/", MainHandler),(r"/about", AboutHandler),])app.listen(8888)tornado.ioloop.IOLoop.current().start()
4:利用代码对网页进行渲染
python">import tornado.ioloop
import tornado.webclass TemplateHandler(tornado.web.RequestHandler):def get(self):data = {"title": "Tornado Template", "content": "Hello, Tornado!"}self.render("template.html", **data) # 使用这个渲染模板template.html,将data中的内容传递到模板中if __name__ == "__main__":app = tornado.web.Application([(r"/template", TemplateHandler),], template_path="templates") # template_path就是渲染的app.listen(8888)tornado.ioloop.IOLoop.current().start()
5:使用 Tornado 框架实现一个简单的 WebSocket 服务器。
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适用于实时应用,例如聊天应用、在线游戏等。
python">import tornado.ioloop
import tornado.web
import tornado.websocketclass WebSocketHandler(tornado.websocket.WebSocketHandler):def open(self):print("WebSocket Connection Opened")def on_message(self, message):self.write_message(f"You said: {message}")def on_close(self):print("WebSocket Connection Closed")if __name__ == "__main__":app = tornado.web.Application([(r"/websocket", WebSocketHandler),])app.listen(8888)tornado.ioloop.IOLoop.current().start()
客户端示例
一个简单的 WebSocket 客户端可以通过浏览器控制台或 JavaScript 文件进行测试。可以使用以下 JavaScript 代码来测试 WebSocket 服务器:
const ws = new WebSocket('ws://localhost:8888/websocket');ws.onopen = (event) => {console.log('Connected to WebSocket server.');ws.send('Hello, Server!');
};ws.onmessage = (event) => {console.log('Received from server: ' + event.data);
};ws.onclose = (event) => {console.log('Disconnected from WebSocket server.');
};ws.onerror = (error) => {console.error('WebSocket error: ' + error);
};
如何运行这段代码
- 确保安装了 Tornado 库:
pip install tornado
- 将上述 Python 代码保存为
server.py
。 - 在命令行中运行:
python server.py
- 打开浏览器,按
F12
打开开发者工具,切换到控制台标签页,运行上述 JavaScript 代码测试 WebSocket 连接。 - 你会在控制台中看到连接建立的消息,服务器回应的消息,以及连接关闭的消息。
这段代码展示了如何使用 Tornado 搭建一个简单的 WebSocket 服务器,并处理 WebSocket 连接的打开、消息接收和关闭事件。这样的服务器可以用于需要实时数据传输的应用场景。