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的urllib模块显示下载进度示例
Jan 17 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
Jun 27 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
分析Python中解析构建数据知识
Jan 20 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
Python中Numpy ndarray的使用详解
May 24 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
python实现滑雪者小游戏
Feb 22 Python
pytorch 带batch的tensor类型图像显示操作
May 20 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图片处理函数获取类型及扩展名实例
2014/11/19 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
js控制div及网页相关属性的代码
2009/12/19 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
python实现宿舍管理系统
2019/11/22 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
Python2与Python3的区别详解
2020/02/09 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
python判断是空的实例分享
2020/07/06 Python
幼教个人求职信范文
2013/12/02 职场文书
关于赌博的检讨书
2014/01/08 职场文书
企业金融服务方案
2014/06/03 职场文书
2014年教师节寄语
2014/08/11 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
Java如何实现树的同构?
2021/06/22 Java/Android