使用FastAPI+SQLAlchemy+Redis+Celery 编写一个完整的用户登录验证API
使用PyQt5+FastAPI+SQLAlchemy+Redis+Celery做一个登录注册页(三)
本文将介绍用 PyQt5+FastAPI+SQLAlchemy+Redis+Celery 做的一个登录注册页,使用邮箱接收验证码,本文介绍是前后端分离的实现方式,厚后端使用 FastAPI+SQLAlchemy+Redis+Celery,你可以将 PyQt5 改为 PySide2 以获得更宽松的开源协议
注意
本文由于涉及到的代码较多,将会是一个系列,会有多篇文章,且不在像 前后端未分离项目一样,做详细步骤描述,只写主要内容,详细的代码你需要自主查看 GItHub 上的公开仓库
系列文章索引
- 设计登录注册页面
- 添加代码运行登录注册页,并为其添加一些样式,和调用资源文件
- 使用 FastAPI+SQLAlchemy+Redis+Celery 编写API
- 使用 Pyqt5 GUI页面请求API,实现逻辑功能
环境
使用到的开源库如下
# requirements.txt
# The project is developed based on Windows Python3.8-64, version: 3.8.10
fastapi~=0.110.0
uvicorn~=0.25.0
SQLAlchemy~=2.0.23
pymysql~=1.1.0
email-validator
bcrypt~=4.0.1
python-jose~=3.3.0
python-multipart~=0.0.9
passlib[bcrypt]~=1.7.4
aioredis~=2.0.1
dependency-injector~=4.41.0
Alembic~=1.13.1
yagmail~=0.15.293
celery[redis]~=5.3.6
gevent~=23.9.1
结构
结构解释如下,方便你理解
--- QtLoginRegistrationServer
|--- alembic # 此目录是做数据库迁移的,迁移使用的是 Alembic
|--- crud
|--- __init__.py
|--- crud.py # 与数据库的交互,增删改查操作
|--- db
|--- __init__.py # sqlalchemy 连接池
|--- models.py # 数据库模型
|--- schemas.py # Pydantic模型,用于关联ORM与数据校验
|--- extension
|--- __init__.py
|--- celery_.py # 分布式任务 celery 初始化
|--- dependencies.py # API:token
|--- redis_.py # 缓存 Redis 初始化
|--- response.py # 自定义响应体
|--- internal
|--- __init__.py
|--- login_signup.py # API:login,signup,send_email等
|--- lib
|--- __init__.py
|--- custom.py # 验证码
|--- logger.py # 日志
|--- send_email.py # 邮件模版
|--- router
|--- __init__.py
|--- user.py # API:create,list,update,delete等
|--- static # 静态资源:css,js,img等
|--- tasks
|--- __init__.py
|--- tasks.py # 分布式任务
|--- alembic.ini # 数据库迁移的配置,修改 sqlalchemy.url
|--- main.py # 主函数
|--- setting.py # 设置
|--- startup.py # 启动入口
特点
-
安全性:使用
OAuth2.0
身份验证规范,OAuth2
实现密码哈希与Bearer JWT
令牌验证 -
缓存:依赖注入
Redis
,提供缓存服务,FastAPI 使用 Redis -
分布式任务:使用
celery
,做耗时任务处理,如邮件发送任务,FastAPi Celery 的使用 -
数据库:使用
sqlalchemy
做数据操作 -
API框架:使用
FastAPI
运行截图
本文来自博客园作者:星尘的博客,转载请注明出处:https://www.cnblogs.com/yqbaowo/p/18089574