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) #经过测试我发现,只有在这个请求结束后 数据库的值才会真正改变