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中xrange和range的区别
May 13 Python
Python中的模块和包概念介绍
Apr 13 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
Sep 18 Python
浅析python继承与多重继承
Sep 13 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 Python
TensorFlow 显存使用机制详解
Feb 03 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
Django 解决distinct无法去除重复数据的问题
May 20 Python
Pycharm新手使用教程(图文详解)
Sep 17 Python
Django一小时写出账号密码管理系统
Apr 29 Python
Python实现列表拼接和去重的三种方式
Jul 02 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 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
php实现的CSS更新类实例
2014/09/22 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
关于vue.js发布后路径引用的问题解决
2017/08/15 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
python的正则表达式re模块的常用方法
2013/03/09 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
python3实现表白神器
2019/04/09 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
python实现文法左递归的消除方法
2020/05/22 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
什么是事务?事务有哪些性质?
2012/03/11 面试题
什么是组件架构
2016/05/15 面试题
岗位职责风险防控
2014/02/18 职场文书
意向协议书范本
2014/04/23 职场文书
电教室标语
2014/06/20 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书