Python Web 框架基础(3)

149 阅读4分钟

Python Web 框架基础

1,Web框架简介

什么是Web框架

Web框架就是用来简化Web开发的软件框架,无非就是一些工具的集合,避免重复造轮子罢了。一般框架都具有:管理路由,支持数据库,支持MVC(下面会介绍),支持ORM,支持模版引擎,管理会话和Cookies。

2,什么是MVC

MVC(Model View Controller),Model主要封装与业务逻辑相关的数据和处理方法,View是数据的HTML呈现,Controller负责响应请求,协调Model与View。这是一个分离思想,前后端分离罢了。这样做的话代码的复用性和组织性好。

image.png

3,什么事ORM

这个上一篇说过,请看上一篇。ORM系统一般以中间件形式存在,主要实现程序对象到关系型数据库数据的映射。

image.png ORM和数据库的对应关系

4,什么是模版引擎

为了让用户界面和业务数据分离产生的,它生成特定格式的文档,用与网站的模版引擎一般生成一个标准的HTML文档。Python内置的很多Web框架内置了模版引擎,使用模版引擎可以在HTML中使用变量。

2,常用Web框架

前面说过一个WSGI,只要遵循WSGI接口规则,就可以自主开发WEb框架。市面上这些框架上百个,咱是初学者也就学一些主流的框架学习使用好一点,主流框架文档齐全,技术积累较多,社区繁盛,可以得到好的支持。

1,Django

这个足以广为人知吧,使用也比较广泛。它拥有世界上最大的社区,最多的包。文档非常完善,提供了一些一站式的解决方案,包括一些缓存啊,ORM,管理后台,验证,表单处理等。是的开发复杂的数据库驱动变得简单。但是Django系统耦合度较高,替换内置功能比较麻烦,学习曲线陡峭,

2,Flash

一个轻量级的Web框架,也是一个小一点的胶水框架罢了。它给Werkzeug和Jinja(WSGI协议及werkzeug-概念篇 - 掘金 (juejin.cn)FastAPI 快速开发 Web API 项目: 模板和 Jinja 介绍 - 掘金 (juejin.cn))粘一块了,容易被扩展。

3,Tornado

它不仅是个框架,还是个Web服务器。它为了解决试试服务而诞生的。 Tornado使用了一部非阻塞IO,它运行速度非常快。

4,FastAPI

FastAPI是一个现代的高性能快速的Python Web框架。它基于标准的Python类型提示,使用Python5.6+构建API。它使用了类型提示,可以减少开发人员发生的错误。它还可以自动生成API文档,编写API接口后,可以使用标准的UI来使用API。

3,开发环境

1,虚拟环境

创建虚拟环境和管理虚拟环境,以及如何管理包。 Python 虚拟环境管理总结 - 掘金 (juejin.cn)这篇文章从原生python的pip和Python的包管理工具conda来说得,刚学习的同学可以看pip的这个,不过个人还是习惯conda。

2,pip包管理工具

参考上面的链接,最好在配置一下自己的国内镜像源,方便下载第三方的包。pip更换国内镜像源 - 掘金 (juejin.cn)这篇文章说的还行。

4,部署腾讯云服务器

1,WSGI+Gunicorn+Nginx+Supervisor部署方式

Flask、Django等框架自身待着Web服务器,在本地可以直接去用内置服务器启动项目。但是性能不是特别好,主要用来开发测试,项目线上发布,需要使用一些高性能的WSGIServer。

1,WSGI

WSGI中有两个,接收请求的Server和处理请求的Application。当Serve收到一个请求后,通过Socket将环境变量和一个Callback回调函数传给后端Application,Application完成页面组装通过Callback把内容返回给sever,最后由sever将响应给Client

2,Gunicorn

常见的WSGI Server容器有Gunicorn和uWSGI。Gunicorn直接用命令启动,不用编写配置文件。相反uWSGI就比较麻烦。而且Gunicorn服务器与各种Web框架兼容,实现简单,服务器资源少且速度更快。

3,Nginx

在Gunicorn服务前在部署一个Nginx服务器。Nginx是一个Web服务器,是一个返向代理工具,通常用来部署静态文件。通过Gunicorn启动服务,在添加一个Nginx服务。可以做一些Gunicron做不到的事情。

1,静态文件支持

经过配置后,Nginx可以直接处理静态文件请求而不用经过应用服务器,比面占用运算资源,可以缓存静态资源,让访问静态资源的速度提高。

2,抗并发压力

Nginx可以吸收一些瞬时间的高并发请求,先保持住链接(缓存HTTP请求),然后后端慢慢处理。

3,HTTP请求头缓存头处理的也比Gunicron和uWSGI完善。
4,多态服务器,可以提供附在均衡和反向代理

4,Supervisor

程序异常退出时,让程序重新启动。Supervisor是一个进程管理工具。

2,关于部署服务器这一块先空着,后期在补一下。