python web框架基础

2022-01-07 11:27:15 浏览数 (1)

文章目录
  • 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 容器 有 GunicornuWSGI,Gunicorn 简单,占用资源少,更快

Nginx

  • 是一个 web 服务器,反向代理工具,通常来部署静态文件
  • 可以直接处理静态文件请求,绕过APP服务器,避免占用运算资源,能缓存静态资源,提速
  • 抗并发能力,缓存住瞬时高并发请求,然后慢慢在后端处理
  • 多台服务器,可以提供负载均衡反向代理

Supervisor

  • 进程管理工具,看守进程,异常退出后,立即启动进程

购买云服务器 https://cloud.tencent.com/product/cvm阿里,腾讯,百度,华为都可以


代码语言:javascript复制
pip install gunicorn
gunicorn -w 3 -b 0.0.0.0:9100 run:app
w进程数,b绑定主机和端口,run是 run.py 文件,app 是py文件里的定义应用

也可以 -c 指定配置文件 如 xxxconf.py


Nginx https://www.runoob.com/linux/nginx-install-setup.html windows下安装以及配置nginx


代码语言:javascript复制
pip install supervisor

supervisor 安装、配置、常用命令


使用云服务器玩一玩:

创建虚拟环境 编写 run_flask_hello_world.py

代码语言:javascript复制
from flask import Flask
  
app=Flask(__name__)
@app.route('/')
def index():
    return "hello michael!"

if __name__ == "__main__":
    app.run()
代码语言:javascript复制
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

在公网上可以访问

0 人点赞