django自带的cache无法多进程共享

  • 问题:
from django.core.cache import cache
在登录接口中我使用 django 自带的cache 来进行缓存token, 
同时使用 uwsgi 来部署django项目,配置了 4 个 worker 来接收用户请求,当用户请求带着token到达时,用户携带的token需要和内存中的token进行比较
请问此时 4 个worker 是共享内存中的token吗?如果不是,有什么解决方案吗
  • 答案:
在使用 uWSGI 部署 Django 项目时,配置了多个 worker 的情况下,每个 worker 实际上是运行在自己的进程中。因此,这些 worker 进程不会共享内存。这意味着,如果您在一个 worker 进程中使用 Django 的内建缓存系统(默认使用本地内存缓存)来存储 token,这个缓存不会被其他 worker 进程所共享。这种情况下,如果一个用户的请求被一个 worker 处理并在那个 worker 的内存中缓存了 token,另一个请求即使带着相同的 token 到达不同的 worker,也无法访问第一个 worker 的内存中的 token。这就会导致一致性问题。
解决方案:
为了解决这个问题,您需要使用一个共享的、中央化的缓存系统,这样所有的 worker 都可以访问同一个缓存数据。常见的解决方案包括:
Redis:1. Redis 是一个非常流行的内存中数据结构存储系统,通常用作数据库、缓存和消息代理。它支持多种类型的数据结构,如字符串、散列、列表、集合、有序集合等。
使用 Redis 作为 Django 的缓存后端可以确保所有 worker 都能访问和修改同一个 token 缓存。
Memcached:2. Memcached 是另一个广泛使用的高性能分布式内存对象缓存系统,适合用于加速动态 Web 应用程序,通过减轻数据库负载。
它也可以作为 Django 缓存后端,提供给多个 worker 共享的缓存。
实施步骤:
1.安装 Redis 或 Memcached:根据您选择的解决方案,安装 Redis 或 Memcached。如果是 Redis,可以使用 pip install redis 安装 Redis Python 客户端。
2. 配置 Django:在 Django 的 settings.py 中配置缓存后端。例如,如果使用 Redis,配置可能如下所示:CACHES = {'default': {'BACKEND': 'django_redis.cache.RedisCache','LOCATION': 'redis://127.0.0.1:6379/1','OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient',}}
}
3. 使用缓存:在代码中,您可以像之前一样使用 cache 来存储和获取 token。现在,由于缓存是中央化的,无论哪个 worker 来处理请求,都能够访问到相同的 token 数据。
通过这种方式,您可以确保所有 uWSGI worker 都能够访问和验证相同的 token,从而解决多进程环境下的数据共享问题。

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

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

相关文章

【三种加载自定义控制器的方式 Objective-C语言】

一、关于这个手动创建Window呢,给大家说完了 1.但是呢,要给大家补充一个东西, 有时候,有的框架,可能会用到什么东西呢,我写到下面: [UIApplication sharedApplication] 什么东西,是不是应用程序对象, 然后呢,keyWindow 是不是拿到它的主窗口, 然后呢,add什么东西…

2023年11月中旬大模型新动向集锦

2023年11月中旬大模型新动向集锦 2023.11.21版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 1、谷歌生成式 AI 搜索生成体验(SGE)扩展到 120 多个新国家/地区 近日,Google 扩展了其由生成式人工智能驱…

在 Windows 中关闭 Nginx 所有进程

在 Windows 中关闭 Nginx 所有进程并强制重启的命令如下: 打开命令提示符(CMD)。 输入以下命令来查找 Nginx 进程的 PID: tasklist /fi "imagename eq nginx.exe"此命令将列出所有名为 nginx.exe 的进程以及它们的 PID…

JavaScript-undefined和null区别

更多内容,请访问: 声明和定义区别 JavaScript-变量类型 JavaScript-变量类型判断 JavaScript-如何使用变量 undefined(未定义) 当一个变量只声明,未赋值时,当前变量会设置为undefined; 当前一…

mybatis使用foreach标签实现union集合操作

最近遇到一个场景就是Java开发中,需要循环多个表名,然后用同样的查询操作分别查表,最终得到N个表中查询的结果集合。在查询内容不一致时Java中跨表查询常用的是遍历表名集合循环查库,比较耗费资源,效率较低。在查询内容…

Arthas使用教程

文章目录 一、简介 1、简介 2、项目所在位置 二、安装Arthas 1、安装Arthas 2、卸载Arthas 3、首次启动。 三、核心监视功能 1、monitor:监控方法的执行情况 2、watch:检测函数返回值 3、trace:根据路径追踪,并记录消耗时间 4、st…

真伪问题_头歌

第1关:真伪问题 StuList [A, B, C, D] for stu in StuList:print("若", stu, "同学考了60分")if stu ! B:print("B同学说了真话")else:print("B同学说了假话")if stu C:print("A同学说了真话")else:print(&qu…

有SSL证书的网站更容易收录吗?

企业有了网站自然也就少不了网站优化方面的工作,这样可以获得更好的排名和流量。而一个网站要想在互联网中立足,首先就需要确保其安全性和可信任性,因此大家往往都会利用SSL证书来保护网站和用户数据,它可以在服务器和用户设备之间…

22款奔驰GLE450升级原厂360全景影像 超广角的视野

360全景影像影像系统提升行车时的便利,不管是新手或是老司机都将是一个不错的配置,无论是在倒车,挪车以及拐弯转角的时候都能及时关注车辆所处的环境状况,避免盲区事故发生,提升行车出入安全性。 360全景影像包含&…

Vite3构建Vue3项目

文章目录 Vite3构建Vue3项目Vite1、创建vite3项目2、安装依赖3、运行vite项目4、安装路由src目录下,添加加router/index.jsmain.js导入router 5、axiosaxios配置 引入element-plus1、安装2、引入1、完整引入2、按需导入1、自动导入 Vite3构建Vue3项目 Vite 什么是…

重要功能丨支持1688API 接口对接一键跨境铺货及采购,解决跨境卖家货源烦恼!

在跨境电商运营中,不少卖家都会优先选择1688平台产品作为跨境店铺货源。 必不可少的1688商品详情接口 阿里巴巴中国站获得1688商品详情 API 返回值说明 item_get-获得1688商品详情 1688.item_get 公共参数 请求地址: 申请调用KEY测试 名称类型必须描述keyStrin…

企企通亮相广东智能装备产业发展大会:以数字化采购促进智能装备产业集群高质量发展

制造业是立国之本,是国民经济的主要支柱、是推动工业技术创新的重要来源。 广东作为我国制造业大省,装备制造业规模增长快速,技术水平居于全国前列。为全面贯彻学习党的二十大精神,进一步推动机械装备可靠性设计,促进新…

8.1 Windows驱动开发:内核文件读写系列函数

在应用层下的文件操作只需要调用微软应用层下的API函数及C库标准函数即可,而如果在内核中读写文件则应用层的API显然是无法被使用的,内核层需要使用内核专有API,某些应用层下的API只需要增加Zw开头即可在内核中使用,例如本章要讲解…

wait和notify使用案例

/*** 开启四个线程 两个waitThread和 两个notifyThread * 使用notifyThread唤醒waitThread线程*/ public class NotifyExample {public static void main(String[] args) {final Object lock new Object();Thread waitThread1 new Thread(() -> {synchronized (lock) {Sys…

本地/笔记本/纯 cpu 部署、使用类 gpt 大模型

文章目录 1. 安装 web UI1.1. 下载代码库1.2. 创建 conda 环境1.3. 安装 pytorch1.4. 安装 pip 库 2. 下载大模型3. 使用 web UI3.1. 运行 UI 界面3.2. 加载模型3.3. 进行对话 使用 web UI 大模型文件,即可在笔记本上部署、使用类 gpt 大模型。 1. 安装 web UI 1…

DCDC同步降压控制器SCT82A30\SCT82630

SCT82A30是一款100V电压模式控制同步降压控制器,具有线路前馈。40ns受控高压侧MOSFET的最小导通时间支持高转换比,实现从48V输入到低压轨的直接降压转换,降低了系统复杂性和解决方案成本。如果需要,在低至6V的输入电压下降期间&am…

Vue 前置 后置 路由守卫 独享 路由权限控制 自定义属性

import Vue from vue import VueRouter from vue-router //导入路由器 Vue.use(VueRouter)import Login from ../components/Login import User from ../components/User //导入需要路由的组件const router new VueRouter({//暴露出去使用routes:[{path: /login,component: Lo…

互联网上门洗衣洗鞋店小程序开发;

干洗店、洗鞋店上门服务,如果搭配洗衣、洗鞋软件,门店的基本功能如收件、充值、上挂等应有尽有,而且支持多家店互联互通,通过小程序、公众号招揽线上生意。 门店版:为单店或多门店连锁的经营模式提供一整套的软件系统…

基于可变形卷积和注意力机制的带钢表面缺陷快速检测网络DCAM-Net(论文阅读笔记)

原论文链接->DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Based on Deformable Convolution and Attention Mechanism | IEEE Journals & Magazine | IEEE Xplore DCAM-Net: A Rapid Detection Network for Strip Steel Surface Defects Base…