Tornado是什么
最近在看Jupyter源码发现了tornado这个web框架。
不仅仅做一个web框架, 通过使用非阻塞网络I/O,Tornado可以扩展到数万个开放连接。
这样非常适合 long polling , WebSockets 以及其他需要与每个用户建立长期连接的应用程序。
好,下面安装试用一下。
安装
pip install tornado
试试看使用tornado框架来写一个web application
import tornado.ioloop
import tornado.web
“”“编写一个请求处理器”“”
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, Tornado Server");
"""创建一个web app"""
def make_app():
#绑定接口“/” 到MainHandler
return tornado.web.Application([
(r"/", MainHandler),
])
#程序入口
if __name__ == '__main__':
app = make_app()
app.listen(8080)
tornado.ioloop.IOLoop.current().start()

效果如下:

再试试做一个form
import tornado.ioloop
import tornado.web
#一个处理form的请求处理器
class MyFormHandler(tornado.web.RequestHandler):
def get(self):
#直接页面渲染一个form
self.write('<html><body><form action="/form" method="POST">'
'<input type="text" name="message">'
'<input type="submit" value="Submit">'
'</form></body></html>')
def post(self):
self.set_header("Content-Type", "text/plain")
self.write("You wrote " + self.get_body_argument("message"))
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, Tornado Server");
def make_app():
#使用application加载多个路由: “/” 接口路由 和 “/form” 接口路由
return tornado.web.Application([
(r"/", MainHandler),
(r"/form", MyFormHandler)
])
if __name__ == '__main__':
app = make_app()
app.listen(18081)
tornado.ioloop.IOLoop.current().start()
以上代码比前面第一个示例多了一个form的请求处理器和路由加载。
看看页面渲染的效果,没有内嵌任何js,这个submit按钮就直接把发起了POST请求给“/form”接口。
而且博主也没有编写任何JS处理页面,特别简化,这个”小魔法“是本文想要推荐tornado的一个原因!

以上随笔,后面再继续推这个框架的解读。
探索Tornado框架:非阻塞I/O与Web应用实践
本文介绍了Tornado框架,它是一个支持非阻塞网络I/O的Web框架,适合长连接应用,如longpolling和WebSockets。通过示例展示了如何创建一个简单的Web应用及处理表单的POST请求,强调了其无需复杂JS即可实现交互的特性,适合快速构建高效Web服务。
3万+





