Django比赛中的比赛情况

时间:2020-09-15 11:05:05

标签: django session django-rest-framework

我有一个使用django的API,该API使用了会话:

def api_a(request):
  request.session["foo1"] = "bar1"
  return Response({})

def api_b(request):
  request.session["foo2"] = "bar2"
  return Response({})

如果我打电话给api_a之后api_b,则request.session设置为{foo1: bar1, foo2: bar2},这是预期的行为。

但是,如果我同时调用api_aapi_b(这些调用是由JavaScript前端执行的),则似乎在每次调用开始时request.session为空,并且每次调用保存仅包含一个元素的会话,结果request.session设置为{foo1: bar1}(缺少foo2)(反之亦然)。

是否可以通过更改会话行为来解决这种竞争状况?

注意:会话是使用Redis配置的(但我不确定它是否相关):

CACHES = {"default": {"BACKEND": "django_redis.cache.RedisCache",}}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"

0 个答案:

没有答案