以下是完整的錯誤:請求的會話在請求完成之前被刪除。例如,用戶可能已經註銷併發請求。Django/Memcached錯誤:請求的會話在請求完成之前被刪除
我正在使用python-memcached與我的會話使用我的緩存。每隔幾天我就會遇到其中一個錯誤。它由request.session.save()上的UpdateError拋出。它來自session/middleware.py中的第60行。 99%的時間一切正常。我在許多不同的URL上看到了有關GET和POST請求的錯誤。用戶報告他們沒有點擊註銷按鈕。他們還報告說,這發生在登錄後5分鐘,所以他們的會話不會過期。我的緩存已經運行了一個多月,我的驅逐次數爲0。如果我谷歌這個錯誤,它似乎沒有人曾經得到過它。
我想連接到memcached可能會因爲某種原因關閉。它在localhost上運行。我唯一一次看到這個錯誤是當我將緩存配置設置爲一個服務器,該服務器正在運行memcached但它不在該接口上偵聽。這會在每個請求中生成這個確切的異常。那麼有沒有辦法讓memcache拒絕監聽第二或第二個連接或丟棄連接?
這裏是我的設置:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'TIMEOUT': 1209600, # Two weeks
},
}
SESSION_SAVE_EVERY_REQUEST = True
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_COOKIE_SECURE = CSRF_COOKIE_SECURE = True
SESSION_COOKIE_AGE = 60 * 90 # In 90 minutes
看來肯定的方式導致此錯誤是請求運行時,運行在一個shell會話密鑰cache.delete。所以有些東西在刪除緩存鍵。我不知道它的Django或Memcached。 Memcached的確說STAT evictions 0
。
我遇到同樣的問題 - 現在好像有三個人在互聯網上有這個問題。 ;)可能是四個。 – Teekin
@Teekin我沒有得到它了。我要檢查的是升級memcached,memcached和web服務器的文件描述符,以及每個用戶正在運行的用戶。通過本地套接字運行memcahed。並添加我粘貼在下面的中間件。 – kagronick
我最近注意到產生這個錯誤的視圖大多被ajax腳本調用或者它們處理文件(例如返回圖像)。對於我的情況,這絕對有可能是用戶註銷了一個併發請求 - 我只是想一直阻止這個錯誤信息。 –