django解决订单并发问题【推荐】


Posted in Python onJuly 31, 2019

并发处理

在多个用户同时发起对同一个商品的下单请求时,先查询商品库存,再修改商品库存,会出现资源竞争问题,导致库存的最终结果出现异常。

解决办法:

悲观锁

当查询某条记录时,即让数据库为该记录加锁,锁住记录后别人无法操作,使用类似如下语法

select stock from tb_sku where id=1 for update;
SKU.objects.select_for_update().get(id=1)

悲观锁类似于我们在多线程资源竞争时添加的互斥锁,容易出现死锁现象,采用不多。

乐观锁

乐观锁并不是真实存在的锁,而是在更新的时候判断此时的库存是否是之前查询出的库存,如果相同,表示没人修改,可以更新库存,否则表示别人抢过资源,不再执行库存更新。类似如下操作

update tb_sku set stock=2 where id=1 and stock=7;
SKU.objects.filter(id=1, stock=7).update(stock=2)

任务队列

将下单的逻辑放到任务队列中(如celery),将并行转为串行,所有人排队下单。比如开启只有一个进程的Celery,一个订单一个订单的处理。

总结

以上所述是小编给大家介绍的django解决订单并发问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python之模拟鼠标键盘动作具体实现
Dec 30 Python
python实现网站的模拟登录
Jan 04 Python
python实现实时监控文件的方法
Aug 26 Python
python3中zip()函数使用详解
Jun 29 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
在django-xadmin中APScheduler的启动初始化实例
Nov 15 Python
python使用rsa非对称加密过程解析
Dec 28 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
详解向scrapy中的spider传递参数的几种方法(2种)
Sep 28 Python
Django数据统计功能count()的使用
Nov 30 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 Python
python opencv将图片转为灰度图的方法示例
Jul 31 #Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 #Python
Python对接六大主流数据库(只需三步)
Jul 31 #Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 #Python
python爬虫 模拟登录人人网过程解析
Jul 31 #Python
Python爬虫 bilibili视频弹幕提取过程详解
Jul 31 #Python
Django实现跨域的2种方法
Jul 31 #Python
You might like
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
js身份证验证超强脚本
2008/10/26 Javascript
Javascript 函数中的参数使用分析
2010/03/27 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
JS中的==运算: [''] == false —>true
2016/07/24 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
2018/05/11 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
vue实现全匹配搜索列表内容
2019/09/26 Javascript
Python字符串处理函数简明总结
2015/04/13 Python
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
python处理html转义字符的方法详解
2016/07/01 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
Python实现注册、登录小程序功能
2018/09/21 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
Python的高阶函数用法实例分析
2019/04/11 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
html5简介及新增功能介绍
2020/05/18 HTML / CSS
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
会计应聘求职信范文
2013/12/17 职场文书
幼儿园秋游感想
2014/03/12 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
工程部部长岗位职责
2015/02/12 职场文书
python解决12306登录验证码的实现
2021/04/18 Python