文章目录
1. Web框架简介
1.1 MVC
1.2 模板引擎
2. 常用 Python Web 框架
3. 虚拟环境
4. 部署方式
learning from 《python web开发从入门到精通》
1. Web框架简介
简化 web 开发的软件框架
一般都支持:管理路由,支持数据库,MVC,ORM,模板引擎,管理会话和Cookies
1.1 MVC
Model View Controller 一种设计模式
Model 封装数据和处理方法
View 是数据的 HTML 展现
Controller 负责响应请求,协调 Model 和 View
1.2 模板引擎
使用模板引擎可以在 HTML 页面中使用变量 如 <title>{{title}}</title>
{{}} 变量会被替换成相应的值,使得界面与数据分离,业务代码与逻辑代码分离,提高复用和开发效率
2. 常用 Python Web 框架
只要遵守 WSGI(服务器网管接口) 规则,就可以自主开发 Web 框架
Django 最广泛,社区最大,最多的包,但是系统耦合度高,替换内置功能麻烦,学习曲线陡峭
Flask 轻量级,容易扩展
Tornado 不单单是框架,还是 web 服务器,为了解决实时服务诞生的(使用了异步非阻塞IO),运行速度非常快
FastAPI 现代的高性能框架,使用了类型提示,能减少开发错误,自动生成 API 文档
3. 虚拟环境
不同的应用程序使用不同的环境依赖,避免升级后不兼容
virtualenv
conda
pip 导出环境包的明细 pip freeze > requirements.txt
新环境下一次性安装 pip install -r requirements.txt
pip 加速:-i 清华源地址 或者 配置 pip.ini 文件,添加源地址,自行网上搜索
4. 部署方式
WSGI
接受请求的服务器 + 处理请求的 APP
Gunicorn
常用的 WSGI Server 容器 有 Gunicorn ,uWSGI,Gunicorn 简单,占用资源少,更快
Nginx
是一个 web 服务器,反向代理工具,通常来部署静态文件
可以直接处理静态文件请求,绕过APP服务器,避免占用运算资源,能缓存静态资源,提速
抗并发能力,缓存住瞬时高并发请求,然后慢慢在后端处理
多台服务器,可以提供负载均衡和反向代理
Supervisor
进程管理工具,看守进程,异常退出后,立即启动进程
pip install gunicorn gunicorn -w 3 -b 0.0.0.0:9100 run:app w进程数,b绑定主机和端口,run是 run.py 文件,app 是py文件里的定义应用
也可以 -c
指定配置文件 如 xxxconf.py
使用云服务器玩一玩:
创建虚拟环境
编写 run_flask_hello_world.py
from flask import Flask app=Flask(__name__) @app.route('/') def index(): return "hello michael!" if __name__ == "__main__": app.run()
gunicorn -w 1 -b 0.0.0.0:9100 run_flask_hello_world:app [2021-12-03 12:05:05 +0800] [23677] [INFO] Starting gunicorn 20.1.0 [2021-12-03 12:05:05 +0800] [23677] [INFO] Listening at: http://0.0.0.0:9100 (23677) [2021-12-03 12:05:05 +0800] [23677] [INFO] Using worker: sync [2021-12-03 12:05:05 +0800] [23679] [INFO] Booting worker with pid: 23679