课程介绍

本课程将带领大家使用 Sanic 这个 Python 异步 IO Web 框架,以及 AIOMySQLAIORedis 等异步库来开发一个支持高并发的 API 服务。学习完本课程,你会对 Python 的 AsyncIO 有一个透彻的理解,掌握如何异步处理 HTTP 请求和访问后端服务(MySQL、Redis),以及如何使用 Docker 来简化应用开发和部署。

本课程里所开发的围观 API 服务可作为本网校另外一门课程 Flutter 移动应用开发实战 里所开发的围观 APP 的后端 API 服务,有志于成为全栈工程师的同学可以选学。

课程地址

因不同平台收取的服务费不同,因此价格略有差异。大家可自由选择购买平台,内容都会同步更新。如有任何有关课程购买的疑问,可加入 QQ 群 729051923 咨询。

适用人群

有 Python 语言基础,想进入 Python 后端服务开发领域的同学。

课程资料

  1. 参考代码 包含技术讲解示例代码和实战项目代码

由于 GitHub 仓库代码更新(优化或修复 Bug)比课程内容快,因此课程里所讲代码跟仓库代码可能会有细微差别。

课程答疑

  1. 叽歪论坛 请在课程对应分类下提问
  2. QQ 讨论群 733208584

以上服务均为附赠,不保证答疑及时性。

课程目录

Sanic Web 框架:轻轻松松实现高并发

Python AsyncIO 介绍:异步 IO 编程 So Easy

  • 为什么需要异步 IO?
  • Python AsyncIO 进化史
  • 高层 APIs
  • 低层 APIs

Sanic 介绍

  • 同步/异步、阻塞/非阻塞、并发/并行
  • 安装 Sanic
  • Hello World
  • 跟 Flask 性能对比

配置和日志

  • 配置来源
  • 内置配置
  • Python3 日志 API
  • 内置 Logger
  • 访问日志格式化参数

请求和响应

  • Request 对象的属性
  • RequestParameters 类型
  • CIMultiDict 类型
  • 自定义 query 参数解析方式
  • 响应内容给请求方

Cookie 和 Session

  • 什么是 Cookie 和 Session
  • 在 Sanic 应用里操作 Cookie
  • Cookie 属性
  • Sanic 没有内置 Session 支持

路由

  • 定义路由
  • 路由参数
  • 限定请求方式和 Host 请求头
  • 构建 URL
  • 严格匹配结尾 /
  • 自定义路由名字
  • 静态文件路由

蓝图

  • 什么时候需要蓝图(Blueprint)
  • 创建蓝图
  • 注册蓝图
  • 蓝图分组(BlueprintGroup)
  • 蓝图还支持以下 Sanic 应用特性

版本化、异常处理、中间件和监听器

  • 版本化
  • 异常处理
  • 中间件
  • 监听器

WebSocket 和流

  • WebSocket

SQLAlchemy SQL 工具包:告别裸写 SQL

介绍

  • 主要特点
  • ORM vs Core:连 Martin Fowler 都厌倦 ORM 了

引擎与连接

  • 引擎(Engine)
  • 连接池(Pool)
  • 创建引擎和连接
  • 使用引擎和连接
  • 执行结果(ResultProxy)
  • 结果行(RowProxy)
  • 事务

定义及创建表

  • 元数据(Metadata )
  • 表(Table)
  • 列(Column)
  • 列默认值(客户端)
  • 列默认值(服务端)
  • 外键约束
  • 唯一约束
  • 主键约束
  • 索引
  • 访问表定义
  • 创建和删除表
  • 反射(Reflect)已有表的定义

生成及执行语句

  • 语句(Statement)对象
  • 插入
  • 查询
  • 更新
  • 删除

手动构建语句

  • 表别名(Alias)和列标签(Label)
  • 操作符(Operator)
  • 联结(Conjunction)
  • 函数
  • 类型转换(Cast)
  • 文本 SQL

高级查询

  • 排序和分页
  • 分组
  • 去重
  • 连接(Join)
  • 标量(Scalar)查询
  • 关联子查询(Correlated Subquery)
  • 集合(Set)查询

围观 API 服务开发:亲自动手才有收获

搭建应用骨架:麻雀虽小五脏俱全

  • 创建项目及其 Python 虚拟环境
  • 编写应用配置
  • 编写应用入口

开发帐号 APIs

  • JSON 响应
  • 错误处理
  • 注册/登录/退出 API
  • 登录检查装饰器
  • 查询已登录用户 API
  • 编辑个人资料 API
  • 发送手机验证码 API
  • 使用 Postman 来测试 API

开发动态 APIs

  • 上传文件 API
  • 发布动态 API
  • 删除动态 API
  • 查询单个动态 API
  • 已发布动态 API
  • 赞/取消赞动态 API
  • 赞过的动态 API
  • 使用 Postman 来测试 API

开发用户 APIs

  • 查询单个用户 API
  • 关注/取消关注用户 API
  • 正在关注的用户 API
  • 粉丝 API
  • 关注用户的动态 API
  • 使用 Postman 来测试 API

Fire 管理命令编写

  • Fire 命令行应用框架介绍
  • 编写模型管理命令

APScheduler 定时任务运行

  • 动态统计
  • 用户统计
  • APScheduler 定时任务调度框架介绍
  • 编写定时任务管理命令

WebSocket 即时消息通信

  • 编写 WebSocket 连接管理器
  • 编写 WebSocket 请求处理器
  • 支持多机分布式服务

Docker 应用部署:一次构建处处运行

Docker 介绍

  • Docker 越来越流行的原因
  • Docker Engine
  • Docker 工作流程

Docker 镜像和容器

  • 概念
  • 分层存储
  • Registry 和 Repository(仓库)
  • Docker CLI 仓库操作
  • Docker CLI 镜像管理
  • Docker CLI 容器管理

Docker 镜像构建

  • 两种构建方式
  • Dockerfile 文件格式
  • Dockerfile 指令
  • 多阶段(Multi-stage)构建

Docker 存储

  • 三种存储方式
  • 绑定挂载
  • 临时文件系统

Docker 网络

  • 介绍
  • 网络驱动
  • Bridge 网络
  • Overlay 网络
  • Host 网络

Docker Compose

  • 适用场景
  • 主要特性
  • 用法示例
  • Compose CLI
  • Compose CLI 子命令
  • Compose 配置文件
  • 多机集群容器编排

使用 Docker 来简化围观 API 服务开发和部署

  • 编写 Dockerfile 镜像构建文件
  • 编写 Compose 应用部署文件
  • 使用 Compose 来部署应用
  • 在 VSCode 里使用远程容器来快速搭建开发环境

参考资料

  1. 参考代码
  2. Sanic
  3. SQLAlchemy
  4. AIOMySQL
  5. AIORedis
  6. MarshMallow
  7. Fire
  8. APScheduler
  9. Docker
  10. Docker Compose
  11. 天火技术博客
  12. 天火 GitHub