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实现扫描指定目录下的子目录及文件的方法
Jul 16 Python
python 中的int()函数怎么用
Oct 17 Python
Python实现列表删除重复元素的三种常用方法分析
Nov 24 Python
Python实现螺旋矩阵的填充算法示例
Dec 28 Python
python基础教程项目三之万能的XML
Apr 02 Python
在双python下设置python3为默认的方法
Oct 31 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
Jul 30 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
python中count函数简单的实例讲解
Feb 06 Python
使用pyplot.matshow()函数添加绘图标题
Jun 16 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
利用php输出不同的心形图案
2016/04/22 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
python中的多线程实例教程
2014/08/27 Python
深入浅析python定时杀进程
2016/06/06 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
Python 支付整合开发包的实现
2019/01/23 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
最新销售员个人自荐信
2013/09/21 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
教师党员整改措施
2014/10/24 职场文书
保姆聘用合同
2015/09/21 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python