Flask中redis的配置与使用

 注意点:

         在__init__.py中需要将redis_store设置成全局变量,这样方便其他文件导入

一、config.py
import logging
import os
from datetime import timedeltafrom redis import StrictRedisclass Config:# 调试信息DEBUG = TrueSECRET_KEY = os.urandom(32)JWT_SECRET = os.urandom(32)JWT_EXPIRY_SECOND = 5# 数据库信息MYSQL_DIALECT = 'mysql'MYSQL_DIRVER = 'pymysql'MYSQL_NAME = 'root'MYSQL_PWD = '123456'MYSQL_HOST = 'localhost'MYSQL_PORT = 3306MYSQL_DB = 'manger'MYSQL_CHARSET = 'utf8mb4'SQLALCHEMY_DATABASE_URI = f'{MYSQL_DIALECT}+{MYSQL_DIRVER}://{MYSQL_NAME}:{MYSQL_PWD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DB}?charset={MYSQL_CHARSET}'SQLALCHEMY_TRACK_MODIFICATIONS = True# redis配置REDIS_HOST = '127.0.0.1'REDIS_PORT = 6379# session配置# SESSION_TYPE = 'filesystem'  # 设置session的存储类型# SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT)  # 指定session存储的服务器# SESSION_USE_SIGNER = True  # 设置签名存储# PERMANENT_SESSION_LIFETIME = timedelta(days=1)  # 设置签名过期时间# 配置默认的log等级LEVEL_NAME = logging.DEBUG# 开发环境配置信息
class DevelopConfig(Config):pass# 生产(线上)环境配置信息
class ProductConfig(Config):DEBUG = False# 测试环境配置信息
class TestConfig(Config):pass# 提供一个统一的访问入口
config_dict = {"develop": DevelopConfig,"product": ProductConfig,"test": TestConfig
}
二、__init__.py
import logging
from logging.handlers import RotatingFileHandlerfrom flask import Flask
from flask_sqlalchemy import SQLAlchemy
from redis import StrictRedis
from flask_session import Sessionfrom config import Config, config_dictdb = SQLAlchemy()
redis_store = Nonedef create_app(config_name):app = Flask(__name__)# 获取config配置config = config_dict.get(config_name)app.config.from_object(config)# 调用日志方法,记录程序运行信息log_file(config.LEVEL_NAME)# 创建数据库关联对象并关联appdb.init_app(app)# 创建redis对象# 当 decode_responses 设置为 True 时,Redis 返回的字符串数据将会被解码为 Python 字符串类型。这样可以方便地处理 Redis 中存储的文本数据。# 而当 decode_responses 设置为 False(默认值)时,Redis 返回的字符串数据将会以字节字符串(bytes)的形式返回。# 这在处理二进制数据或者需要与其他 Redis 客户端进行交互时可能更为合适global redis_storeredis_store = StrictRedis(host=config.REDIS_HOST, port=config.REDIS_PORT, decode_responses=True)# # 创建session对象# Session(app)# 注册蓝图from manger.user import user_blueapp.register_blueprint(user_blue)return app
三、app.py
from manger import create_app, db
from flask_migrate import Migrate
from manger import models# 传入settings参数,开发版本“develop”,线上版本“product”
app = create_app('develop')# 数据库设置
migrate = Migrate(app, db)@app.route('/')
def hello_world():  # put application's code herereturn 'Hello World!'if __name__ == '__main__':app.run()
四、views中使用,登录
@user_blue.route('/login', methods=['POST'])
def login():username = request.json.get('username')password = request.json.get('password')if not all([username, password]):return JsonResponse.error(msg='缺少必要参数!').to_response()try:user_obj = models.User.query.filter(models.User.name == username).first()except Exception as e:current_app.logger.error(e)if not user_obj.check_password(password):return JsonResponse.error(msg='密码错误!').to_response()token = encode_token(user_obj.id, username, password)# 将token存入redis中redis_store.set('token', token)# 设置过期时间redis_store.expire('token', 20)  data = {"data": user_obj.to_dict(),"token": token}return JsonResponse(code=200, data=data, msg='登录成功!').to_response()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python语言基础知识(一)

文章目录 1、Python内置对象介绍2、标识符与变量3、数据类型—数字4、数据类型—字符串与字节串5、数据类型—列表、元组、字典、集合6、运算符和表达式7、运算符和表达式—算术运算符8、运算符和表达式—关系运算符9.1、运算符和表达式— 成员测试运算符in9.2、运算符和表达式…

领先英伟达的GPU1.6倍性能,AMD发布最强AI芯片Instinct MI300

AMD发布最强AI芯片 Instinct MI300X AI 加速器和 Instinct MI300A 数据中心 APU,声称比 Nvidia 的竞争 GPU 领先 1.6 倍。与 Nvidia 竞争产品相比,在以下几个关键方面展示了显著优势:配置方面 内存容量:MI300X:拥有 1…

Linux---进程管理

本章主要介绍RHEL8中如何管理并查看进程。 了解进程并查看系统中存放的进程了解进程的信号进程优先级设置 进程介绍 在 Windows中打开任务管理器就可以查看到系统中的所有进程,如图下图所示。 这里列出了系统中所有的进程,不过也可以使用命令行工具来…

leetcode刷题:611.有效三角形的个数(双指针实现)

题目地址:有效三角形的个数 解决此题时,首先需要知道的是如何判断三个数字是否能够构成三角形。 我们知道,三角形任意两边之和都大于第三边。所以判断三个数字是否能构成三角形需要进行三次比较(最基础的思路) 方法一…

面试篇算法:(一:排序算法)

一&#xff1a;冒泡排序 int[] a{2,5,3,7,4,8}for(i0;i<a.length;i) {for(j0;j<a.length-i-1;j){if(a[j]>a[j1])(int tempa[j];a[j]a[j1];a[j1]temp;)} }原理&#xff1a;进行多次的比较&#xff0c;每次将最大的值选取出来&#xff0c;放在最后面。在进行多次比较。…

高精度加法,减法,乘法,除法(上)(C语言)

前言 加&#xff0c;减&#xff0c;乘&#xff0c;除这些运算我们自然信手捏来&#xff0c;就拿加法来说&#xff0c;我们要用c语言编程算ab的和&#xff0c;只需让sum ab即可&#xff0c;可是这是局限的&#xff0c;我们都知道int的表示的最大值为2147483647&#xff08;32位…

python 进程通信

1.概述 这篇文章介绍并行运算中的subprocess模块&#xff0c;subprocess 模块允许我们启动一个新进程&#xff0c;并连接到它们的输入/输出/错误管道&#xff0c;从而获取返回值。 subprocess 它可以用来调用第三方工具&#xff08;例如&#xff1a;exe、另一个python文件、命令…

kepler.gl部署在线说明文档

1 概述 1.1 介绍 1、Kepler.gl 是一个强大的开源地理空间分析工具&#xff0c;用于大规模数据集的可视化。它由 Uber 的数据可视化团队开发&#xff0c;并且是基于 Web 技术构建的。Kepler.gl 涉及到以下几个主要技术领域&#xff1a; WebGL: Kepler.gl 通过 WebGL 进行渲染…

WVP-RPO开源项目搭建实践

0.拉取代码 GitHub - 648540858/wvp-GB28181-pro: WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联&#xff0c;支持rtsp/rtmp等视频流转发到国标平台&…

解锁全球潜力:IT外包解决跨国企业海外分支的IT需求

在全球化的浪潮中&#xff0c;跨国企业为了拓展业务辐射面&#xff0c;经常在世界各地设立海外分支。然而&#xff0c;这些分支机构面临着独特的挑战&#xff0c;其中包括解决复杂的IT需求。为了更高效地应对这些挑战&#xff0c;越来越多的企业正在转向IT外包&#xff0c;以便…

sqlserver已经启动了允许远程连接,但局域网内无法访问

sqlserver已经启动了允许远程连接&#xff0c;但局域网内无法访问。 可以确认一下sqlserver browser是不是没有启动。 修改启动模式为自动试一试。

【java】Java程序员,你掌握了多线程吗?

摘要&#xff1a;互联网的每一个角落&#xff0c;无论是大型电商平台的秒杀活动&#xff0c;社交平台的实时消息推送&#xff0c;还是在线视频平台的流量洪峰&#xff0c;背后都离不开多线程技术的支持。在数字化转型的过程中&#xff0c;高并发、高性能是衡量系统性能的核心指…

科技云报道:DDR5火了!揭开下一代超高速内存的秘密

科技云报道原创。 在最新的存储市场动态中&#xff0c;存储芯片大厂的减产策略显现出其效果&#xff0c;特别是在DDR内存领域。 根据台湾工商时报的最新报道&#xff0c;第四季度的内存芯片合约价格出现了超出预期的上涨。 这一价格变动尤其在DDR5芯片上表现突出&#xff0c…

使用Redis构建简易社交网站(2)-处理用户关系

目的 本文目的&#xff1a;实现用户关注和取消关注功能。&#xff08;完整代码附在文章末尾&#xff09; 相关知识 在我之前的文章 《使用Redis构建简易社交网站(1)-创建用户与动态界面》中提到了如何实现简易社交网站中创建新用户和创建新动态功能。 那这篇文章将教会你掌…

第二证券:政策稳预期强信心 民间投资结构性亮点纷呈

民营经济是中国特色社会主义商场经济的重要组成部分&#xff0c;是推动中国式现代化和高质量展开的生力军。本年以来&#xff0c;国内外环境仍然复杂多变&#xff0c;我国民营企业展开耐性不减。受访专家标明&#xff0c;跟着支撑民营经济展开的系列严峻抉择计划安置执行落地&a…

js vue 输入正确手机号/邮箱后,激活“发送验证码”按钮

按钮禁止点击状态&#xff1a; 按钮能够点击状态&#xff1a; 我采用的方式是监听手机号/邮箱输入框的输入事件&#xff0c;即实判断用户输入的数据是否满足规则&#xff0c;如果满足手机号/邮箱规则&#xff0c;则激活“获取验证码”按钮。 话不多说&#xff0c;上代码 样式…

pWnOS v2.0

该靶机绑定了静态IP地址 10.10.10.100&#xff0c;所以这里需要修改我们的网络配置&#xff01;整个网段修改为10.10.10.0/24 信息收集 主机存活探测 arp-scan -l 端口信息探测 nmap -sT --min-rate 10000 -p- 10.10.10.100 &#xff08;只开放了22 80端口&#xff09; 服务…

运行时更改Android应用程序图标

设想一下&#xff0c;当我们正在开发一款应用。随着某个节日的临近&#xff0c;我们可能希望通过更改应用图标来增强用户的节日氛围&#xff0c;例如在图标上添“新年特惠”或者“龙年大吉”等标签。 这种小小的改变看似不经意&#xff0c;却能够吸引用户的注意。 运行时更改应…

Windows离线安装Node-Red

在线安装Node-Red 参考文章 步骤 安装Nodejs使用nmp安装Node-Red先在本地安装Node-red将本地的Node-red拷贝到远程 安装Nodejs 在nodejs中文网下载长期支持的Windows安装包&#xff0c;并进行安装 安装完成后为nodej添加环境变量&#xff0c;环境变量的地址为安装目录。 …

深度学习/机器学习中关于Ubuntu/Linux常用命令

这里写目录标题 Ubuntu命令1. 列出用户和用户组2. 修改用户组权限3. 用户组添加删除用户4. 查看文件夹大小 Anconda相关1. Ubuntu多用户情况下共用同一个anaconda2. 查看conda环境3. 创建环境4. 删除环境5. 查看第三方库6. 给当前环境安装第三方库7. 给指定环境安装第三方库&am…