社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

漫画,小莉要学Python后端,看大牛是怎么教她的!

菜鸟学Python • 5 年前 • 581 次点击  




Python 是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大。Python 类库极其丰富,Python 在 web 开发方面有着广泛的应用,比如常见的 python web 框架有 django 、tornado、flask、sanic等。今天我们就聊一下这四个 python web 后端框架,通过这篇文章你会对这几个 web 框架有一些的认识和了解。


01

什么是Web框架


先简单了解一下web框架是什么,web框架主要用于动态网络开发,动态网络主要是指现在的主要的页面,可以实现数据的交互和业务功能的完善。

使用web框架进行web开发的时候,在进行数据缓存、数据库访问、数据安全校验等方面,不需要自己再重新实现,而是将业务逻辑相关的代码写入框架就可以也就是说,通过对web框架进行主观上的“缝缝补补”,就可以实现自己进行web开发的需求了。



02

Django

1).Django 在 github 上 47.1K 个 Star

它可以用更少的代码更快地构建更好的Web应用程序,实现快速开发和简洁实用的设计。可解决 Web 开发的大部分麻烦,让开发者可以专注于编写应用程序而无需重新发明轮子。

django 的项目代码结构如下,django_tutorial 是项目根目录,主要是项目的一些常规配置,app01是我新建的 app 应用,相当于一个业务上的功能模块。


2).飞速打开浏览器,看一下效果:            


3).Django 还自带 admin 管理后台

如果你业务需求比较简单可以直接使用它的后台实现你的业务,就不用手写业务代码了。


4).django 还自带了强大的数据库 ORM 组件

对数据库进行增删改查不同写原生sql语句,按照它 ORM 语法编写代码即可。如果你换了数据库也不用修改ORM语句。用 django 和数据库打交道是很舒服的。


django 大包大揽,还自带很多其他常用工具和组件(比如用户认证、权限管理、分页、缓存、邮件发送), 适合快速开发功能完善的企业级网站。用它来快速开发一些 Web 应用是不错的。




03

Tornado



Tornado 在 github 上 18.8K Star ,它是一个 Python Web 框架和异步网络库,它不仅仅是一个 web 框架,也有HTTP服务器的功能。通过使用非阻塞网络I / O,Tornado 可以扩展到成千上万的开放连接,非常适合长时间轮询,WebSocket 和需要与每个用户建立长期连接的其他应用程序。你可以使用一个单文件就可以写一个小项目。



运行之后,打开浏览器看一下效果:

Tornado 和 django 的开发思维完全不同:

1).基本上整个 tornado 都是围绕着异步和协程的支持使用 async/await 异步写法。tornado 并没有自带ORM组件、后台admin、邮件发送等常用web模块,只是提供了核心的功能,其余的都需要你自己来做。

2).Django 为代表的传统框架采用 WSGI 协议与服务器对接的,而这类服务器通常是基于多线程/多进程的,也就是说每有一个网络请求,服务器都会有一个线程/进程进行处理。

3).Tornado 核心模块是ioloop,当一个请求特别耗时,Tornado就把它丢在那处理,然后继续处理下一个请求,确保后面的请求不会被卡死。

Tornado之所以能同时处理大量连接的原因:

  • 利用高效的epoll技术处理请求,单线程/单进程同时处理大量连接。

  • 没用使用传统的wsgi协议,而是利用Tornado自己的web框架和http服务形成了一整套WSGI方案进行处理。

  • 异步处理方式,Tornado提供了异步接口可供调用。



04

Flask



Flask 在 github 上 48.8K 个 Star,  它是一个轻量级的 Web 应用程序框架。它旨在使快速入门变得容易,并具有扩展到复杂应用程序的能力。它最初是围绕 Werkzeug 和 Jinja 的简单包装,并已成为最受欢迎的Python Web应用程序框架之一。


Flask提供了建议,但不强制执行任何依赖关系或项目布局。由开发人员选择他们想使用的工具和库。通过几行代码就可以写一个小项目,项目结构看下图:



Flask要比上面两种架构更轻便,运行之后也会产生一个链接,我们打开浏览器看一下:

Flask 和 django 一样,是阻塞io模型:

1).框架性能上差不多。它和 django 不同的是只是提供基本核心的功能,没有提供一些常用的组件(比如用户认证、权限管理、分页、缓存、邮件发送)这些,如果需要使用那些组件功能,需要使用第三方拓展,它很轻,一个py文件就可以写一个web项目。


2).Flask 比 Django 更灵活,用Flask来构建应用之前,选择组件的时候会给开发者带来更多的灵活性 ,但是要考虑使用的这些第三方拓展是否兼容。Flask 的灵活性,也是双刃剑。



05

Sanic



Sanic 在github上是 13.5K Star, 它是Python 3.6以上版本的网络服务器和网络框架,旨在快速发展。它允许使用Python 3.5中添加的 async / await 语法,这使您的代码无阻塞且快速。


该项目的目标是提供一种简单的方法来启动和运行高性能的HTTP服务器,该服务器易于构建,扩展和最终扩展。简单的项目代码如下:

有没有发现 sanic 开发项目的写法和 flask 代码的写法很相似,也有blueprint(蓝图),  sanic框架是和 flask 风格相似的异步协程框架,简单轻量,并且性能很高。python3.4 推出了 asyncio,解决令人诟病的异步io性能问题。


3.5后推出了uvloop, 基于libuv,libuv是一个使用C语言实现的高性能异步I/O库,uvloop 用来代替 asyncio 默认事件循环ioloop,可以进一步加快异步I/O操作的速度,而tornado 在python3中还没有使用uvloop, 它使用的还是 ioloop 。但是 sanic 是个比较新的框架,对应的开发文档资料比较少。


总结:

哪个框架最好——世上没有最好的框架,只有最适合你自己、最适合你的团队的框架。在 web 开发过程中,性能问题最常出现在数据库访问和文件读写上。

选择使用哪个 web 框架的因素:

1). 开发项目的业务类型,需要快速开发还是对性能要求比较高一些;

2). web 框架文档资料,框架生态(第三方拓展)是否丰富

3). 团队个人水平

所以每个 web 框架,各有各的优缺点,最终使用哪个 web 框架需要综合考虑。


近期热门:
高手心得|菜鸟学Python从入门到进阶
干货来了!菜鸟入门最经典的机器学习项目,面试必考!
400多人做过的8道Python极速入门题


 点击阅读原文,阅读菜鸟学Python 400篇干货!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54990
 
581 次点击