了解两个python web框架:Django&&Tornado
作为一名大学生,我在找暑期实习的时候发现基本上关于python web的工作都会提及一个框架Django,于是好奇的在博客园寻找了一下相关文章并总结一下:
Django:
Django毫无疑问是当下最出名的python应用框架,采用了MVC框架模式,模型M,视图V和控制器C,对这个我印象很深因为软件体系结构课讲过,这套框架以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
有了框架,我们程序员可以减少写控制层的程序,转而由框架完成,我们只需写少量调用代码从而实现目标,提高工作效率。
Django支持多种数据库如mysql,oracle。其支持全自动化管理后台,只需要使用ORM(对象关系映射 (ORM,object-relational mapping):以Python类形式定义你的数据模型,ORM将模型与关系数据库连接起来,你将得到一个非常容易使用的数据库API,同时你也可以在Django中使用原始的SQL语句。),做简单的对象定义,它就可以自动生成数据库结构,以及全功能的管理后台。
Django的方便也意味着,其内置的ORM与其他框架内模块耦合程度很高(这会让一些程序员选择耦合度低的框架)。应用程序若不使用内置的ORM则无法享受框架内种种基于ORM的便利。
Django工作机制:
1.用manage .py runserver 启动Django服务器时就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,例如URLConf(就像是Django所支撑的网站目录)等,其中最重要的配置就是ROOT_URLCONF,它告诉Django哪个Python模块应该用作本站的URLConf,默认的是urls .py
2.当访问url的时候,Django会根据ROOT_URLCONF的设置来装载URLConf。
3.然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数,并把HttpRequest对象作为第一个参数(通常是request)
4.最后该view函数负责返回一个HttpResponse对象。
Django框架适用于小型或中型网站,或者作为大型网站快速高效的实现产品雏形的工具。
Tornado:
Tornado 它是非阻塞式服务器,而且速度相当快,每秒处理数以千计的连接,得利于其非阻塞的方式和对epoll(epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率)的运用,大学操作系统课程中着重讲了如何提高系统cpu利用率,FIFO等一系列基础方法。
如果跟asp.net(ASP.NET又称为ASP+,不仅仅是ASP的简单升级,而是微软公司推出的新一代脚本语言。ASP.NET基于.NET Framework的Web开发平台,不但吸收了ASP以前版本的最大优点并参照Java、VB语言的开发优势加入了许多新的特色,同时也修正了以前的ASP版本的运行错误。)相比,Tornado仅实现了AsyncHttpHandler(Async为异步串行端口,也就是实现两台计算机的通信);除此之外,全部需要自己去实现。它只有一个mysql的简单封装。
Torando为单线程异步,所以数据库查询若太慢,整个服务器会堵塞。这时需提高整个数据库的查询速度,从而才能实现高流量访问。如将web应用封装为异步,但是若数据库硬盘IO为0(即此时数据库为空闲)则查询才能足够快,但现实很难实现。如果后端有查询实在是太慢,无法绕过,Tornaod的建议是将这些查询在后端封装独立封装成为HTTP接口,然后使用Tornado内置的异步HTTP客户端进行调用
参考文章:http://www.cnblogs.com/wuvist/archive/2011/06/28/django-And-tornado.html
图片找自:https://gss1.bdstatic.com/-vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=8bccb1563b87e950561afb3e71513826/738b4710b912c8fcfe024858fd039245d78821b5.jpg
作者:JanKin-Cui
出处:http://www.cnblogs.com/JanKin-Cui/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。