我有一个使用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_a
和api_b
(这些调用是由JavaScript前端执行的),则似乎在每次调用开始时request.session
为空,并且每次调用保存仅包含一个元素的会话,结果request.session
设置为{foo1: bar1}
(缺少foo2
)(反之亦然)。
是否可以通过更改会话行为来解决这种竞争状况?
注意:会话是使用Redis配置的(但我不确定它是否相关):
CACHES = {"default": {"BACKEND": "django_redis.cache.RedisCache",}}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"