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入门篇之文件
Oct 20 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
python网络编程调用recv函数完整接收数据的三种方法
Mar 31 Python
python爬虫之百度API调用方法
Jun 11 Python
python 将list转成字符串,中间用符号分隔的方法
Oct 23 Python
Python函数中不定长参数的写法
Feb 13 Python
在vscode中配置python环境过程解析
Sep 28 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 Python
python 实现图像快速替换某种颜色
Jun 04 Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
Dec 11 Python
python 模块重载的五种方法
Apr 24 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
php设计模式之命令模式使用示例
2014/03/02 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
Javascript中神奇的this
2016/01/20 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
js重写方法的简单实现
2016/07/10 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
vue生命周期实例小结
2018/08/15 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
Python之eval()函数危险性浅析
2014/07/03 Python
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python 函数list&read&seek详解
2019/08/28 Python
C++是不是类型安全的
2014/02/18 面试题
移动通信行业实习自我鉴定
2013/09/28 职场文书
实习求职信
2013/12/01 职场文书
体育专业个人求职信范文
2013/12/27 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
卫生巾广告词
2014/03/18 职场文书
给小学生的新年寄语
2014/04/04 职场文书
《桃林那间小木屋》教学反思
2014/05/01 职场文书
应届生面试求职信
2014/07/02 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
2015年党员承诺书
2015/01/21 职场文书
【超详细】八大排序算法的各项比较以及各自特点
2021/03/31 Python
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android