以下是完整的错误:请求的会话在请求完成之前被删除。例如,用户可能已经注销并发请求。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脚本调用或者它们处理文件(例如返回图像)。对于我的情况,这绝对有可能是用户注销了一个并发请求 - 我只是想一直阻止这个错误信息。 –