Python Tonado 写一个Web应用

举报
雷学委 发表于 2022/02/07 22:45:56 2022/02/07
【摘要】 ​ Tornado是什么最近在看Jupyter源码发现了tornado这个web框架。不仅仅做一个web框架, 通过使用非阻塞网络I/O,Tornado可以扩展到数万个开放连接。这样非常适合 long polling , WebSockets 以及其他需要与每个用户建立长期连接的应用程序。好,下面安装试用一下。安装pip install tornado试试看使用tornado框架来写一个we...

 Tornado是什么

最近在看Jupyter源码发现了tornado这个web框架。

不仅仅做一个web框架, 通过使用非阻塞网络I/O,Tornado可以扩展到数万个开放连接。

这样非常适合 long polling , WebSockets 以及其他需要与每个用户建立长期连接的应用程序。

好,下面安装试用一下。

安装

pip install tornado

试试看使用tornado框架来写一个web application

Tornado Web Server — Tornado 6.2.dev1 文档

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的一个原因!

  


以上随笔,后面再继续推这个框架的解读。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。