做为一名大学生,我在找暑期实习的时候发现基本上关于python web的工做都会说起一个框架Django,因而好奇的在博客园寻找了一下相关文章并总结一下:html
Django:python
Django毫无疑问是当下最出名的python应用框架,采用了MVC框架模式,模型M,视图V和控制器C,对这个我印象很深由于软件体系结构课讲过,这套框架以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。mysql
有了框架,咱们程序员能够减小写控制层的程序,转而由框架完成,咱们只需写少许调用代码从而实现目标,提升工做效率。程序员
Django支持多种数据库如mysql,oracle。其支持全自动化管理后台,只须要使用ORM(对象关系映射 (ORM,object-relational mapping):以Python类形式定义你的数据模型,ORM将模型与关系数据库链接起来,你将获得一个很是容易使用的数据库API,同时你也能够在Django中使用原始的SQL语句。),作简单的对象定义,它就能够自动生成数据库结构,以及全功能的管理后台。web
Django的方便也意味着,其内置的ORM与其余框架内模块耦合程度很高(这会让一些程序员选择耦合度低的框架)。应用程序若不使用内置的ORM则没法享受框架内种种基于ORM的便利。sql
Django工做机制:数据库
1.用manage .py runserver 启动Django服务器时就载入了在同一目录下的settings .py。该文件包含了项目中的配置信息,例如URLConf(就像是Django所支撑的网站目录)等,其中最重要的配置就是ROOT_URLCONF,它告诉Django哪一个Python模块应该用做本站的URLConf,默认的是urls .pydjango
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