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 相关文章推荐
运动检测ViBe算法python实现代码
Jan 09 Python
python使用itchat实现手机控制电脑
Feb 22 Python
IntelliJ IDEA安装运行python插件方法
Dec 10 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
Feb 01 Python
详解Python基础random模块随机数的生成
Mar 23 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
Python龙贝格法求积分实例
Feb 29 Python
将python字符串转化成长表达式的函数eval实例
May 11 Python
python跨文件使用全局变量的实现
Nov 17 Python
Pycharm 跳转回之前所在页面的操作
Feb 05 Python
使用python绘制分组对比柱状图
Apr 21 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
smarty实例教程
2006/11/19 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
详解vue 单页应用(spa)前端路由实现原理
2018/04/04 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
[43:57]Liquid vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python发送伪造的arp请求
2014/01/09 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
python自动发微信监控报警
2019/09/06 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
Python 字符串池化的前提
2020/07/03 Python
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
面料业务员岗位职责
2013/12/26 职场文书
重阳节活动总结
2014/08/27 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
房产遗嘱范本
2015/08/06 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang