我已经使用 Pylibmc 绑定在 Django 中设置了 memcached:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
'LOCATION': ['10.241.1.1:11211',
'10.241.1.2:11211',]
}
}
我在服务器上用 django shell 进行了测试,memcached 池用于获取和设置 memcached 中的值。但是当我尝试设置
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db" OR
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
我的网站仍然可以访问,但当用户按下登录按钮时会停止。所以我猜这一定是会话后端的问题。我的网站使用数据库作为会话后端运行良好。我在 apache 或网站错误日志中找不到任何相关错误,并且 /var/log/memcached.log 是空的。
参考: https://docs.djangoproject.com/en/1.1/topics/http/sessions/
答案1
我猜这是 Pylibmc 的一个 bug,尽管这个 bug 的原因还不清楚。奇怪的是,当我在 management/commands/ 中尝试同样的代码时,它工作正常。但我甚至无法在 views 中执行 cache.set(key, value),这会导致页面停止。
所以我切换回python-memcached,并且它可以工作了。