并发处理

在多个用户同时发起对同一个商品的下单请求时,先查询商品库存,再修改商品库存,会出现资源竞争问题,导致库存的最终结果出现异常。

解决办法:

悲观锁

当查询某条记录时,即让数据库为该记录加锁,锁住记录后别人无法操作,使用类似如下语法

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解决订单并发问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

本文标题: django解决订单并发问题【推荐】

本文地址: http://www.cppcns.com/jiaoben/python/267208.html

python盘点订单_django解决订单并发问题【推荐】相关推荐

  1. python访问数据库如何解决高并发_使用 Python 和 Oracle 数据库实现高并发性

    随着趋势发展的核心转向更多而不是更快发展,最大限度地提高并发性的重要性日益凸显.并发性使得编程模式发生了新的转变,可以编写异步代码,从而将多个任务分散到一组线程或进程中并行工作.如果您不是编程新手并且 ...

  2. python访问数据库如何解决高并发_怎样解决数据库高并发的问题

    怎样解决数据库高并发的问题?解决数据库高并发使用缓存式的Web应用程序架构.增加Redis缓存数据库.增加数据库索引.页面静态化.使用存储过程.MySQL主从读写分离.分表分库.负载均衡集群. 解决数 ...

  3. 基于Django的乐观锁与悲观锁解决订单并发问题的一点浅见

    订单并发这个问题我想大家都是有一定认识的,这里我说一下我的一些浅见,我会尽可能的让大家了解如何解决这类问题. 在解释如何解决订单并发问题之前,需要先了解一下什么是数据库的事务.(我用的是mysql数据 ...

  4. java 高并发商城库存订单处理,下单减库存,如何解决高并发减库存问题

    下单减库存,如何解决高并发减库存问题 1. 减库存 一般下单减库存的流程大概是这样的: 1.查询商品库存.这里直接查的Redis中的库存. 2.Redis中的库存减1.这里用到的Redis命令是:in ...

  5. python盘点订单_在线超市-Ulabox订单数据分析(python)

    摘要 本次实践案例利用数据kaggle数据进行分析.链接如下 该数据集为西班牙在线杂货店Ulabox订单数据,数据集包括匿名的子集30K订单从2017年开始的所有类型的客户.整个分析分为五个步骤:&q ...

  6. python 京东_Python数据分析-京东订单数据分析实战

    本次数据来源于京东,类目为大家电-家用电器-冰箱,抽取2020年5月25日10%数据,数据量为 70k+,在 jupyer notebook 内进行分析. 数据文件: 链接:迅雷云盘:提取码:ezQq ...

  7. python如何解决高并发_Flask 处理高并发、多线程

    前言: 使用flask做服务时,可以使用python run.py的方式运行,但是这样不能用于生产环境,可能会出现连接无响应的情况.后来通过查找资料,发现flask服务处理多线程.高并发的一下方法,主 ...

  8. python解决高并发的方法

    python解决高并发的方法 参考文章: (1)python解决高并发的方法 (2)https://www.cnblogs.com/zjb19950716/p/9714307.html 备忘一下.

  9. Python笔记_84_我的订单_使用celery完成订单超时_视频播放_使用保利威视频加密

    文章目录 我的订单 后端提供查询当前登录用户的订单列表信息 前端请求获取当前登录用户的订单信息 订单状态显示分析 使用Celery的定时任务来完成订单超时功能 视频播放 使用保利威云视频服务来对视频进 ...

最新文章

  1. Python求解最速降线问题
  2. 近期活动盘点:基于雷达图像预测未来降水参赛经验分享、大数据基础设施讲座、药品行业分析及大数据应用思享会(11.22-11.29)
  3. IE与Firefox的CSS兼容
  4. 吴恩达机器学习(第六章)——正则化
  5. 【重难点】【JUC 05】线程池核心设计与实现、线程池使用了什么设计模式、要你设计的话,如何实现一个线程池
  6. 2005年3月9日笔记
  7. 【BZOJ】【1008】【HNOI】越狱
  8. java 开发微信中回调验证一直提示 解密失败处理(Java)
  9. 在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。...
  10. thinkphp5.1 安装think-queue 2.0.4
  11. 实验一:VLAN实验
  12. QS排名前70-100的英国大学怎么选?
  13. Offset commit failed with a retriable exception. You should retry committing the latest consumed off
  14. 蓝桥:8皇后·改(⼋皇后问题)
  15. Druid加载(load data)HDFS文件数据
  16. 皮带撕裂检测matlab,基于机器视觉的皮带纵向撕裂检测方法
  17. 成田机场坐access到品川_下了飞机看不懂日语?这篇干货告诉你从羽田/成田机场到东京市区怎样方便又省钱!...
  18. EPLAN界面编辑背景颜色更改
  19. c语言还是python-自学编程应该从c语言还是python入手?
  20. 罗杨美慧 20190919-1 每周例行报告

热门文章

  1. 二本学生连发10篇SCI直博香港城大,被质疑「灌水」,本人回应!
  2. 北大华为鹏城联合首次提出视觉 Transformer 后量化算法!
  3. 重大布局!北京大学,落子上海!
  4. 我用AI分析了《赛博朋克 2077》的评价,发现真爱粉都是来吸猫的
  5. 程序员崩溃的10个瞬间
  6. 漫画:什么是动态规划?
  7. Django博客系统项目需求分析
  8. 三数之和(三数不重复)
  9. 栈溢出原理 小记 基础中的基础~~
  10. 【Python基础】拯救你奇丑无比的Python代码的神器