flask模块化、封装使用缓存cache(flask_caching)

1.安装flask_caching库

pip install flask_caching

2.创建utils Python 软件包以及cache_helper.py

2.1cache_helper.py代码

from flask_caching import Cachecache = Cache()class CacheHelper:def __init__(self, app, config):cache.init_app(app, config)@staticmethoddef get(key):return cache.get(key)@staticmethoddef set(key, value, timeout=None):cache.set(key, value, timeout=timeout)@staticmethoddef delete(key):cache.delete(key)

3.app.py文件中代码

3.1.初始化cache代码

# 初始化cache,硬编码方式配置缓存
# cache = CacheHelper(app, config={'CACHE_TYPE': 'simple'})
# 初始化cache,读取配置文件方式配置缓存
cache = CacheHelper(app,  config=cache_config)

3.2.config.py完整代码如下 

# 配置Cache缓存类型参数值
cache_config = {'CACHE_TYPE': 'simple'  # 使用本地python字典进行存储,线程非安全
}

3. service中使用cache,my_service.py完整代码

3.1my_service.py中使用cache代码

from flask import Flaskfrom utils.cache_helper import cacheclass MyService:@staticmethoddef set_my_cache():# 写入缓存,过期时间为60秒cache.set('my_cache', "你好!cache", timeout=60)@staticmethoddef get_my_cache():# 读取缓存my_cache = cache.get('my_cache')return my_cache

4.app.py完整代码

4.1调用my_service.py(MyService类)中的方法

from flask import Flaskfrom config.config import cache_config
from services.my_service import MyService
from utils.cache_helper import CacheHelperapp = Flask(__name__)# 初始化cache,硬编码方式配置缓存
# cache = CacheHelper(app, config={'CACHE_TYPE': 'simple'})
# 初始化cache,读取配置文件方式配置缓存
cache = CacheHelper(app, config=cache_config)@app.route('/')
def hello_world():  # put application's code herereturn 'Hello World!'# 写入缓存
@app.route('/api/SetCache')
def set_cache():MyService.set_my_cache()return 'success'# 读取缓存
@app.route('/api/GetCache')
def get_cache():my_cache = MyService.get_my_cache()return my_cacheif __name__ == '__main__':app.run()

4.2启动flask项目,先请求写入缓存接口,再请求读取缓存接口

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

arm 、stm32、linux该如何学习?有没有先后顺序,先学什么比较好?

先讲自己,我是从Arduino单片机入门,再到stm32 ,再开发瑞萨,TI,然后学校教了51。这是一个奇怪的学习过程,所以当我第一次接触51单片机的时候,刚好我有一些资料,是我根据网友给的问题精…

多个单元运算符合用???:::

string a "a";string b "b";string c "c";string r a "a" ? b "b" ? c"c" ? "b" : "cc" : "33":"44";string rr a "a"? b "b" ?(c …

PHP老照片修复文字识别图像去雾一键抠图微信小程序源码

🔍解锁复古魅力,微信小程序黑科技大揭秘!老照片修复&更多神奇功能等你来试! 📸 【老照片修复,时光倒流的美颜术】 你是否珍藏着一堆泛黄的老照片,却因岁月侵蚀而模糊不清?现在…

buuctf zip伪加密

[BUUCTF]zip伪加密_buuctf zip伪加密-CSDN博客 借鉴以上博客 010打开 这两个位置是计算机判断是否为加密文件 两个都为09(奇数) 一般为真加密 两个为偶数(00)不加密 一个奇数一个偶数,伪加密 (注意,是一般) 这道题两个奇数,以为是真加密 暴力解码一下,解不出 看到题目提…

为服务器安全保驾护航的“三道防线”!

前言: 随着互联网的发展与普及,服务器安全性的保护变得越来越重要。服务器是企业和个人在网络中存储和处理敏感数据的重要设备,一旦服务器遭到未经授权的访问或攻击,可能导致数据泄露、系统崩溃等严重后果。因此,具备强…

ICC2:split_fanout如何插inverter pair

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接: ICC2:split fanout用法

【排序 - 堆排序】

堆排序(Heap Sort)是一种高效的排序算法,利用了堆这种数据结构的特性。堆排序的时间复杂度为 O(n log n),并且是一个原地排序算法,不需要额外的存储空间。 堆的基本概念 堆是一种特殊的树形数据结构,分为…

用Racket做一个拼图游戏——4 实现工具

4 实现工具 思路理清楚了,接下来就一个一个功能实现。在阐述实现功能的编程过程中,会延伸讲解编程思路、相关的Racket函数及相关知识点,力图达到在实践中的学习目的。 在编程实现过程中,首先实现图片操作功能,再通过…

告别混乱,可道云企业网盘个人标签,让文件管理更轻松

在信息爆炸的时代,你是不是常常觉得自己的大脑就像一台过载的处理器,各种文件、资料、想法在脑海中“打架”,让你焦头烂额? 别担心,可道云企业网盘个人标签功能来拯救你的“大脑内存”了! 我们需要告别无…

Python 轻松生成多种条形码、二维码 (Code 128、EAN-13、QR code等)

条形码和二维码是现代信息交换和数据存储的重要工具,它们将信息以图形的形式编码,便于机器识别和数据处理,被广泛应用于物流、零售、医疗、教育等各领域。 本文将介绍如何使用Python快速生成各种常见的条形码如Code 128、EAN-13,…

3DMAX卡死也要安装的10大插件

在探索3DMAX的无限创意边界时,有些插件如同星辰般璀璨,即便面对插件偶尔的“倔强”卡顿,设计师们依然对其爱不释手,誓要将其纳入麾下。以下便是那份令人心动的“卡死也要安装”的10大插件清单,每个都蕴含着设计师对美的…

【GIS开发小课堂】WebGIS开发必学开源框架Openlayers,附赠视频教程、电子书、笔记源码

WebGIS开发之Openlayers 当前,WebGIS开发热门程度越来越高,市场招聘供需比处于较为紧张的状态。 常见的WebGIS开源框架有:OpenLayers、Leaflet、MapBox、MapFish、GeoServer、GeoEXT、MapInfo等。公司最希望求职者具备至少一种框架开发技能…

什么样的开放式耳机好用?,五大超强卷王单品推荐!

对于热衷尝试不同耳机类型的小伙伴们而言,经过对佩戴舒适度、音质清晰度及电池续航能力的全面考量,开放式蓝牙耳机因其卓越的平衡性脱颖而出,成为多数人的心头好。其轻巧设计不仅保证了长时间佩戴的舒适感,还兼顾了音质与续航的双…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十九章 Linux 工具之make 工具和 makefile 文件

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【亲测有效】Linux/Ubuntu远程服务器使用plt.show()没有反应,vscode ssh 远程ubuntu,plt.show不显示图片问题

【亲测有效】Linux/Ubuntu远程服务器使用plt.show没有反应,vscode ssh 远程ubuntu,plt.show不显示图片问题 plt.show()在linux或者ubuntu系统中不会有显示,这是因为系统没有图形界面。解决方法:保存成png图片然后在程序运行后查看…

使用 MinIO 赢得 RAG 权利

人们常说,在人工智能时代,数据是你的护城河。为此,构建生产级 RAG 应用程序需要合适的数据基础架构来存储、版本控制、处理、评估和查询构成专有语料库的数据块。由于 MinIO 采用数据优先的 AI 方法,因此对于此类项目,…

PostMan添加path参数请求

如下图: /findInventoryByQrCode/:qrCode用 : 会出现Path Variables 栏

科普文:看懂Linux日志分析

日志文件是Linux系统中极为重要的一部分,它们记录了系统和应用程序的各种活动信息。通过日志文件,系统管理员可以监控系统的运行状态、发现潜在的问题,并进行故障排除。 一. 常见的日志文件 在介绍具体的日志分析命令之前,首先了…

Mybatis的优缺点及适用场景?

目录 一、什么是Mybatis? 二、Mybatis框架的特点 三、Mybatis框架的优点? 四、MyBatis 框架的缺点? 五、MyBatis 框架适用场合? 六、代码示例 1. 配置文件 mybatis-config.xml 2. 映射文件 UserMapper.xml 3. Java 代码…

前端面试39(关于git)

针对前端开发者的Git面试题可以覆盖Git的基础概念、常用命令、工作流程、团队协作、以及解决冲突等方面。以下是一些具体的Git面试 Git基础知识 什么是Git? Git是一个分布式版本控制系统,用于跟踪计算机文件的更改,并协调多个人共同在一个项…