tornado框架的简单使用

最近,正在开始使用tornado框架,tornado:有解决高并发,异步非阻塞,即是服务器又是框架,性能优越,速度快。django呢,开发很高效,第三方库齐全,后台管理全自动化。

1.首先:安装tornado

在cmd下:pip install tornado

2.helloworld

#!/usr/bin/env Python
#coding:utf-8

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web

from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        greeting = self.get_argument('greeting', 'Hello')
        self.write(greeting + ', this is my first tornado web')

if __name__ == "__main__":
    tornado.options.parse_command_line()
    app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

在浏览器输入:http://127.0.0.1:8000/   即出现hello,this is my first tornado web

3.介绍web服务器工作流程

以下图借自http://kenby.iteye.com/blog/1159621


web服务器工作原理:
(1) 创建listen socket, 在指定的监听端口, 等待客户端请求的到来
(2) listen socket接受客户端的请求, 得到client socket, 接下来通过client socket与客户端通信
(3) 处理客户端的请求, 首先从client socket读取http请求的协议头, 如果是post协议, 还可能要
      读取客户端上传的数据, 然后处理请求, 准备好客户端需要的数据, 通过client socket写给客户端


然后就可以介绍前面的代码了

tornado.httpserver:是为服务器提供http协议,实现客户端和服务器的来连接,而且tornado非阻塞,单线程也体现在这里。

tornado.ioloop:用于处理 socket 相关的连接、响应、异步读写等网络事件,能够实现非阻塞 socket 循环

tornado.options:命令行解析模块

tornado.web:web框架与异步功能

导入tornado.options中的模块,定义了访问的端口号

接下来是一个请求处理类:用get方法请求url,并且反馈信息。

下面是主程序:

第一句,是解析命令行的语句。

第二句第三句,将application实例化,handlers建立网站请求集合,通过httpserver参数调用,实现http协议服务器访问。HTTPServer 是一个单线程非阻塞 HTTP 服务器,执行 HTTPServer 一般要回调 Application 对象,并提供发送响应的接口。

第四句,服务器监听端口号。

第五句,开始接收HTTP请求。

猜你喜欢

转载自blog.csdn.net/zzzzzztt/article/details/79600744
今日推荐