首页 > 数据库 >使用FastAPI+SQLAlchemy+Redis+Celery 编写一个完整的用户登录验证API

使用FastAPI+SQLAlchemy+Redis+Celery 编写一个完整的用户登录验证API

时间:2024-03-22 17:02:29浏览次数:18  
标签:__ SQLAlchemy __. FastAPI py Redis ---

使用PyQt5+FastAPI+SQLAlchemy+Redis+Celery做一个登录注册页(三)

本文将介绍用 PyQt5+FastAPI+SQLAlchemy+Redis+Celery 做的一个登录注册页,使用邮箱接收验证码本文介绍是前后端分离的实现方式,厚后端使用 FastAPI+SQLAlchemy+Redis+Celery,你可以将 PyQt5 改为 PySide2 以获得更宽松的开源协议

注意

本文由于涉及到的代码较多,将会是一个系列,会有多篇文章,且不在像 前后端未分离项目一样,做详细步骤描述,只写主要内容,详细的代码你需要自主查看 GItHub 上的公开仓库

系列文章索引

  1. 设计登录注册页面
  2. 添加代码运行登录注册页,并为其添加一些样式,和调用资源文件
  3. 使用 FastAPI+SQLAlchemy+Redis+Celery 编写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            # 启动入口

特点

  1. 安全性:使用 OAuth2.0 身份验证规范,OAuth2 实现密码哈希与 Bearer JWT 令牌验证

  2. 缓存:依赖注入Redis,提供缓存服务,FastAPI 使用 Redis

  3. 分布式任务:使用celery,做耗时任务处理,如邮件发送任务,FastAPi Celery 的使用

  4. 数据库:使用sqlalchemy做数据操作

  5. API框架:使用FastAPI

GitHub完整代码
本文章的原文地址
GitHub主页

标签:__,SQLAlchemy,__.,FastAPI,py,Redis,---
From: https://www.cnblogs.com/yqbaowo/p/18089574

相关文章

  • SQLAlchemy 快速入门
    SQLAlchemyORM工具库https://docs.sqlalchemy.org/en/20/index.htmlORM快速入门声明模型DeclareModels我们定义模块级构造,这些构造将形成我们将从数据库查询的结构。这种结构被称为声明式映射(DeclarativeMapping),它同时定义了Python对象模型,以及描述特定数据库中存在......
  • Redis系列十:Pipeline详解
    转载自:https://blog.csdn.net/w1lgy/article/details/84455579一、pipeline出现的背景:redis客户端执行一条命令分4个过程:发送命令-〉命令排队-〉命令执行-〉返回结果 1这个过程称为Roundtriptime(简称RTT,往返时间),mgetmset有效节约了RTT,但大部分命令(如hgetall,并没......
  • 4 Redis持久化
    Redis是一个内存数据库,所以其运行效率非常高。但也存在一个问题:内存中的数据是不持久的,若主机宕机或Redis关机重启,则内存中的数据全部丢失。当然,这是不允许的。Redis具有持久化功能,其会按照设置以快照或操作日志的形式将数据持久化到磁盘。根据持久化使用技术的不同,Red......
  • Redis系列之高可用集群模式介绍
    Redis系列之高可用集群模式介绍1.Redis主从模式1.1什么是主从模式?主从模式,是redis集群最基本的模式,主库负责读写,从库负责读。主库的数据会同步到从库,但是从库写的数据不会自动同步到主库,除非用写脚本等方式手动同步。这种模式应急能力比较差,假如出现宕机的情况,需要手动......
  • 使用 langchain 连接 通义千问 并用 fastApi 开放接口
    安装langchain方法https://www.cnblogs.com/hailexuexi/p/18087602安装fastapifastapi 是一个用于构建高性能Web应用的Python框架,它提供了简洁、高效的API开发体验。pipinstallfastapi 安装uvicornuvicorn 是一个用于运行 FastAPI 应用的服务器,它可以将......
  • Redeemer(Redis)
    Redeemer(Redis)1.TASK1问题:机器上打开了哪个TCP端口?使用nmap命令扫描端口(如果以下命令效果不佳,可以添加-Pn):nmap-sS-T4-p0-6553510.129.138.161可知开放的端口号为6379/tcp。答案:63792.TASK2问题:哪个服务正在计算机上打开的端口上运行?使用命令nmap-A-p6379......
  • Redis不同的持久化方式有什么差异?我们来做个小试验。
    前言大家应该都知道,Redis持久化方式主要有两种:RDB(RedisDataBase)和AOF(Append-onlyfile)。但是他们各自存储了什么内容?有什么差异呢?今天我来给大家做个小试验。前期准备,需要安装好docker、docker-compose的运行环境。一、安装Redis1、创建相关目录,执行如下命令。mkdir-p......
  • SpringBoot整合Redis:Redis优化解决数据一致性问题
    ......
  • Redis第二课,1.set key value(设置对应的key和value)2.get key(得到value值)Redis全局
    Redis的启动 redis-cli目录1.setkeyvalue(设置对应的key和value)2.getkey(得到value值)Redis全局命令(支持很多的数据结构)3.keys(用来查询当前服务器匹配的key)生产环境/线上环境4.exist(判定key是否存在):判定key是否存在​编辑5.DEL  key 返回删掉的key......
  • 记一次Redis报错问题
    问题描述在Spring项目中使用了@Cacheable注解并且将缓存放入redis,当从Redis读取缓存时提示了反序列化异常,无法构造UnmodifiableMap,没有默认的构造函数CouldnotreadJSON:Cannotconstructinstanceof`org.apache.commons.collections4.map.UnmodifiableMap`(noCreators,......