1
我有以下REST方法,每次单击jQuery选项卡来存储活动选项卡时,都会更新会话的值。Django会话值偶尔不会持久
@csrf_exempt
def update_active_tab_request(request):
"""
Stores the active tab for a given tab item
"""
for tab, active in request.GET.iteritems():
request.session[tab] = int(active)
return HttpResponse("OK", status=200)
这是一个相当简单的常规,而我遇到的问题是,它的价值并不总是存储在会话。我查看了Web服务器日志,并且我已经记录了日志语句来验证代码是否被调用。一切似乎都在工作,但我发现当这个方法返回时会话没有被更新。
认为它可能是更新会话时的性能/同步问题,我已将会话存储更改为SESSION_ENGINE='django.contrib.sessions.backends.cache'
。这并没有帮助。我也设置SESSION_SAVE_EVERY_REQUEST=True
总是保存会话。这也没有帮助。
我无法解释这种行为。任何有助于解决问题的方法都将非常感谢。
你是否检查过问题不在于会话过期吗?默认情况下,如果你没有修改它,SESSION_COOKIE_AGE应该是2周。另外,当你不使用'SESSION_ENGINE ='django.contrib.sessions.backends.cache''时,你使用了什么存储器? – Ngenator 2013-03-11 14:02:47
这个会话没有过期,我正在使用memcached后端。切换到默认的数据库会话后端没有什么区别。问题依然存在。 – CadentOrange 2013-03-11 14:28:10
缓存是否填满?如果您使用缓存进行会话,则不能保证它会被持久保存,除非您使用'cache_db' https://docs.djangoproject.com/zh/dev/topics/http/sessions/#using-cached-sessions – Ngenator 2013-03-11 15:03:02