天天看点

[Tornado]Python-Tornado框架的学习(1)

首先先提供一个小Demo

# -*- coding: UTF-8 -*-
import tornado.ioloop
import tornado.web
# 定义处理类型
class IndexHandler(tornado.web.RequestHandler):
    # 添加一个get请求
    def get(self):
        # 在响应中添加数据
        self.write("Hello World")
        self.write("-------------------------------------------------------------")
if __name__ == '__main__':
    # 路由
    app = tornado.web.Application([(r'/',IndexHandler)])
    # 绑定一个监听端口
    app.listen(8010)
    # 启动web程序,开始监听端口的连接
    tornado.ioloop.IOLoop.current().start()

           

整个过程其实就是在创建一个socket服务端并监听8010端口,当请求到来时,根据请求中的url和请求方式(post、get或put等)来指定相应的类中的方法来处理本次请求,在上述demo中只为url为http://127.0.0.1:8010的请求指定了处理类IndexHandler。所以,在浏览器上访问:http://127.0.0.1:8010,则服务器给浏览器就会返回 Hello,world ,否则返回 404: Not Found(tornado内部定义的值), 即完成一次http请求和响应。

1、在启动程序阶段,第一步,获取配置文件然后生成url映射(即:一个url对应一个XXRequestHandler,从而让XXRequestHandler来处理指定url发送的请求);第二步,创建服务器socket对象并添加到epoll中;第三步,创建无线循环去监听epoll。

2、在接收并处理请求阶段,第一步,接收客户端socket发送的请求(socket.accept);第二步,从请求中获取请求头信息,再然后根据请求头中的请求url去匹配某个XXRequestHandler;第三步,匹配成功的XXRequestHandler处理请求;第四步,将处理后的请求发送给客户端;第五步,关闭客户端socket。