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