def get(self, request):
#
# 通过订单表,获取一条未生成佣金的订单
#
order = Order.objects.filter(wages__isnull=True).first()
if order:
# 根据用户uid生成佣金
order.wages = get_wages(order.uid)
# 保存至数据库
order.save()
return Response(status=status.HTTP_200_OK)
如上面的请求函数,两次请求同时进行。第二次请求获取到的queryset缓存会替换第一个请求的queryset缓存吗?
两次请求获取到的queryset,缓存的内存地址是一样的吗?
是不是第二次会覆盖第一次的queryset缓存?
你对
queryset
的缓存理解完全错误,如果两个请求可以共享到一个queryset
,而且还带和cache
相关的。那获取到的结果必然是绝对错误的。queryset
的缓存只是你在不发起数据库操作的时候的缓存,即便在同一个请求中,两次一模一样的数据库操作也还是不会使用缓存的,因为使用缓存会导致完全错误的结果。下面的代码会共有缓存:
下面的代码不会共有缓存:
两个请求不会共享任何东西,都是线程隔离的