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实现对PPT文件进行截图操作的方法
Apr 28 Python
Python简单删除目录下文件以及文件夹的方法
May 27 Python
python 计算文件的md5值实例
Jan 13 Python
Python中%r和%s的详解及区别
Mar 16 Python
Python使用回溯法子集树模板解决迷宫问题示例
Sep 01 Python
Python3实现购物车功能
Apr 18 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
Python数据类型之Number数字操作实例详解
May 08 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
10张动图学会python循环与递归问题
Feb 06 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 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
在JavaScript中调用php程序
2009/03/09 PHP
php在线代理转向代码
2012/05/05 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
js 弹出菜单/窗口效果
2011/10/30 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
Python中replace方法实例分析
2014/08/20 Python
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
Python2与Python3的区别实例分析
2019/04/11 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
python 的topk算法实例
2020/04/02 Python
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
AJAX的优缺点都有什么
2015/08/18 面试题
校园安全检查制度
2014/02/03 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
音乐学专业求职信
2014/07/22 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
病房管理制度范本
2015/08/06 职场文书
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python