Python web的Tornado框架
Tornado
1.Tornado简介
Tornado是FaceBook使用Python编写的一种web服务器的开源版本,它和其他的web服务器有着很大的区别:他是非阻塞式服务器,而且速度相当快。
科普:socket的非阻塞式服务器(Unblock)和阻塞式服务器(Block),同步服务器(sync)和异步服务器(Async)
同步/异步服务器主要针对的是客户端:
同步:用户发送一个请求,在未得到结果之前,该请求就得不到返回(提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事)
异步:和同步相反。当用户发送一个请求后,不能立即得到结果。当逻辑处理完成后,通过状态、通知和回调来通知请求者(请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕)
阻塞/非阻塞服务器主要针对的是服务端:
阻塞:请求结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。请求者只有在得到结果之后才会得到返回结果
非阻塞:和阻塞相反。不能立即得到结果之前,不会阻塞该线程,而会立即返回结果
2.安装Tornado
使用win+r打开命令窗口,输入cmd,点击确定按钮,
得到如下结果:
将路径切换到Python的安装环境的路径的Scripts下面,输入pip install tornado,等待安装完毕
3.简单的Tornado登录程序
通过使用Python web的Tornado框架实现网站的登录功能,获得登录的用户名和密码
3.1 主代码
''' create pengpan 20180123 title = "使用五大Python web框架中的Tornado进行编写一个登录网页" 其中要使用的第三方库Tornado ''' from tornado import web, ioloop, httpserver class LoginHandler(web.RequestHandler): # 读取login1.html中的内容 def get(self, *args, **kwargs): self.render('login1.html') # 获取submit之后的数据 def post(self, *args, **kwargs): userName = self.get_argument('userName') passWord = self.get_argument('passWord') print(userName,passWord) self.write('欢迎进入Attacking_Ape的登录界面') # 由于处于不同的目录下面,所以要进行必要的设置,读取其中的内容 template_setting = { 'template_path':'template' } # 该处进行配置,让地址和内容进行一一对应,localhost:8080/login1-->这个网址对应的是LoginHandler这个类-->LoginHandler application = web.Application([ (r"/login1",LoginHandler), ],**template_setting) # socket服务 if __name__ == '__main__': http_server = httpserver.HTTPServer(application) http_server.listen(8080) # 监听端口 ioloop.IOLoop.current().start()
3.2 html文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Attacking_Ape登录界面</title> </head> <body> <h1>登录</h1> <form method="post" action="login1"> <p>登录名:<input name="userName" type="text"></p> <p>密 码:<input name="passWord" type="password"></p> <p><input name="button" type="submit" value="登 录"></p> </form> </body> </html>
3.3 目录结构
3.4 网站结构
3.5 后台输出
整个过程其实就是在创建一个socket服务端并监听8080端口,当请求到来时,根据请求中的url和请求方式(post、get或put等)来指定相应的类中的方法来处理本次请求,在上述demo中只为url为http://127.0.0.1:8080/login1的请求指定了处理类LoginHandler。所以,在浏览器上访问:http://127.0.0.1:8080/login1,登录之后服务器会显示“欢迎进入Attacking_Ape的登录界面”字样,后台得到你输入的用户名和密码
,否则返回 404: Not Found(tornado内部定义的值), 即完成一次http请求和响应。