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学习手册中的python多态示例代码
Jan 21 Python
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 Python
python列出目录下指定文件与子目录的方法
Jul 03 Python
Python抓取框架 Scrapy的架构
Aug 12 Python
Python SQLite3数据库日期与时间常见函数用法分析
Aug 14 Python
TensorFlow模型保存和提取的方法
Mar 08 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
python wxpython 实现界面跳转功能
Dec 17 Python
python 微信好友特征数据分析及可视化
Jan 07 Python
Python接口开发实现步骤详解
Apr 26 Python
python 实现两个变量值进行交换的n种操作
Jun 02 Python
简单介绍Python的第三方库yaml
Jun 18 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中实现简单的ACL 完结篇
2011/09/07 PHP
php字符串截取函数用法分析
2014/11/25 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
利用onresize使得div可以随着屏幕大小而自适应的代码
2010/01/15 Javascript
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
python网页请求urllib2模块简单封装代码
2014/02/07 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
python 上下文管理器使用方法小结
2017/10/10 Python
python爬虫爬取网页表格数据
2018/03/07 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
python感知机实现代码
2019/01/18 Python
利用Python检测URL状态
2019/07/31 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
入股协议书范本
2014/04/14 职场文书
师德师风建设方案
2014/05/08 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
英文感谢信格式
2015/01/21 职场文书
关爱空巢老人感想
2015/08/11 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android