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中使用urllib2伪造HTTP报头的2个方法
Jul 07 Python
深入理解python中的闭包和装饰器
Jun 12 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
Python实现找出数组中第2大数字的方法示例
Mar 26 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
浅谈ROC曲线的最佳阈值如何选取
Feb 28 Python
Python常驻任务实现接收外界参数代码解析
Jul 21 Python
详解Flask前后端分离项目案例
Jul 24 Python
正确的理解和使用Django信号(Signals)
Apr 14 Python
教你怎么用Python生成九宫格照片
May 20 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 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 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
php中cookie的使用方法
2014/03/29 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
js实现简单页面全屏
2019/09/17 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
js实现秒表计时器
2019/12/16 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
对Python3 序列解包详解
2019/02/16 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
python怎么对数字进行过滤
2020/07/05 Python
python如何提升爬虫效率
2020/09/27 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
高二英语教学反思
2014/01/19 职场文书
优秀教师事迹简介
2014/02/02 职场文书
我的梦想演讲稿
2014/04/30 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
继承公证书格式
2015/01/26 职场文书
Django 实现jwt认证的示例
2021/04/30 Python