django 事务踩坑
with transaction.atomic():
save_id = transaction.savepoint()
#xx.字段A ormg更新操作
#提交事务
transaction.savepoint_commit(save_id)
#从django中看到 xx.字段A的值已经改变,但是通过三方工具链接到数据库,发现数据其实并未改变,那神魔时候数据库的值会改变?
print(xx.字段A)#该接口为第三方接口,三方接口会查询xx.字段A,三方反应:xx.字段A的值并没有改变,经测试发现确实提交事务savepoint_commit后也没有改变
res = requests.post(url=refresh_task_api, json=data)
return JsonResponse(result) #经过测试我发现,只有在这个请求结束后 数据库的值才会真正改变 问题来了:怎么解决那?
with transaction.atomic():
save_id = transaction.savepoint()
#xx.字段A ormg更新操作
#提交事务
transaction.savepoint_commit(save_id)
#从django中看到 xx.字段A的值已经改变,但是通过三方工具链接到数据库,发现数据其实并未改变,那神魔时候数据库的值会改变?
print(xx.字段A)#启动一个子线程调用三方接口去执行
def async(f):
def wrapper(*args, **kwargs):
thr = Thread(target=f, args=args, kwargs=kwargs)
thr.start()
return wrapper
def A(data):
res = requests.post(url=refresh_task_api, json=data)
@async
A()
return JsonResponse(result) #经过测试我发现,只有在这个请求结束后 数据库的值才会真正改变
django 事务踩坑的更多相关文章
- 记一次 Spring 事务配置踩坑记
记一次 Spring 事务配置踩坑记 问题描述:(SpringBoot + MyBatisPlus) 业务逻辑伪代码如下.理论上,插入数据 t1 后,xxService.getXxx() 方法的查询条 ...
- Kettle 事务、转换内顺序、excel模版、使用踩坑
kettle中转换和作业的执行顺序: 1.一个作业内的转换,是顺序执行的. 2.一个转换内的步骤是并行执行的. 3.作业内不支持事务,转换内支持事务. 根据业务需要,通常需要在 ...
- nginx + gunicorn + django 2.0 踩坑
部署踩坑 部署踩坑提前准备服务器端准备安装nginx使用uwsgi部署使用gunicorn配置配置nginx配置django中的路径url 提前准备 在本地能够 python(3) manage.py ...
- Django model重写save方法及update踩坑记录
一个非常实用的小方法 试想一下,Django中如果我们想对保存进数据库的数据做校验,有哪些实现的方法? 我们可以在view中去处理,每当view接收请求,就对提交的数据做校验,校验不通过直接返回错误, ...
- SQL Server 在Alwayson上使用内存表"踩坑"
200 ? "200px" : this.width)!important;} --> 介绍 因为线上alwayson环境的一个数据库上使用内存表.经过大概一个星期监控程序发 ...
- react-router 踩坑记
react-router踩坑分享 背景 辛苦历程 JavaScript动态修改 第一次尝试 第二次尝试 第三次尝试 第四次尝试 总结步骤 其他方案 原理 History 常见的3种History Br ...
- djangorestframework+vue-cli+axios,为axios添加token作为headers踩坑记
情况是这样的,项目用的restful规范,后端用的django+djangorestframework,前端用的vue-cli框架+webpack,前端与后端交互用的axios,然后再用户登录之后,a ...
- AeroSpike踩坑手记1:Architecture of a Real Time Operational DBMS论文导读
又开了一个新的坑,笔者工作之后维护着一个 NoSQL 数据库.而笔者维护的数据库正是基于社区版本的 Aerospike打造而来.所以这个踩坑系列的文章属于工作总结型的内容,会将使用开发 Aerospi ...
- TiDB 深度实践之旅--真实“踩坑”经历
美团点评 TiDB 深度实践之旅(9000 字长文 / 真实“踩坑”经历) 4 PingCAP · 154 天前 · 3956 次点击 这是一个创建于 154 天前的主题,其中的信息可能已经有所发 ...
- 微信小程序踩坑集合
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...
随机推荐
- CF837G - Functions On The Segments
我们考虑 \(\sum_{i=l}^r{f_i(x)}\) 是个什么东西.首先这个奇怪的东西很好离线做,所以尽管题目要求强制在线,我们还是离线下来试试. 我们发现,我们可以 \(x\) 坐标从 \(1 ...
- PostgreSQL数据库切割和组合字段函数
Postgresql里面内置了很多的实用函数,下面介绍下组合和切割函数一.组合函数1.concata.语法介绍 concat(str "any" [, str "any& ...
- 跟女朋友介绍十个常用的 Python 内置函数,她夸了我一整天
内置函数是什么 了解内置函数之前,先来了解一下什么是函数 将使用频繁的代码段进行封装,并给它起一个名字,当我们使用的时候只需要知道名字就行 函数就是一段封装好的.可以重复使用的代码,函数使得我们的程序 ...
- 自己动手从零写桌面操作系统GrapeOS系列教程——8.x86介绍
由于GrapeOS目前只支持x86,所以本讲我们简单的介绍一下x86. 百度百科上是这样介绍的:x86泛指一系列基于Intel 8086且向后兼容的中央处理器指令集架构. 中央处理器就是我们平时说的C ...
- Vue-cli创建的项目结构分析,各初始化文件解释说明
结构图: 一.项目结构说明 1..gitignore :git的忽略文件(哪些文件或文件夹不想接受git管理的,可在此文件配置) 2.babel.config.js:babel控制文件,ES6=&g ...
- elasticsearch 内存分配设置
一.背景 elasticsearch版本为2.3.3 elasticsearch 默认安装后设置的内存是1GB,对于现实业务来说太小 预计在五台机器上配置elasticsearch构建集群,但是构建索 ...
- 解决为知笔记docker镜像部署后登录连接mysql报错
https://www.wiz.cn/zh-cn/docker 部署正常后登录一切正常,但开机重启后登录用户名时报错,是和非正常退出程序导致mysql sock锁,清除该锁文件后恢复正常. 1 C:\ ...
- Tomcat配置中的java.lang.IllegalStateException: No output folder问题
最近运行Tomcat7.0时总会报错:Tomcat安装文件夹下的某个文件拒绝访问. localhost:8080 java.lang.IllegalStateException: No output ...
- Easyui 表格列数据合并!
//datagrid调用列子 onLoadSuccess: function (data) { $(".datagrid-header-row").css("text-a ...
- C语言中局部变量和全局变量关于释放
1.全局都属于静态,局部区分静态非静态,局部静态和全局的区别在于可见范围,局部能使用外部看不见的意思,本质相同的. 2.如果是全局变量或局部静态变量,编译器会为其分配一个位于静态存储区的地址.这个地址 ...