最近我们从django的默认数据库会话切换到了memcached会话。
我们一直在使用contrib会话模型根据session_key删除会话:https://github.com/django/django/blob/master/django/contrib/sessions/models.py
Session.objects.get(session_key=key).delete()
一旦我们切换到memcached会话,上面的查询就会引发一个DoesNotExist异常。
Django的Session模型是否可用于memcached会话?如果是这样,解决方案是什么?
答案 0 :(得分:3)
Django提供了一个django.contrib.sessions.backends.cache
会话后端,只要缓存配置正确,它就可以实现你所需要的。
正如您自己所建议的那样,Session
后端使用db
模型。要使用cache
后端,您可以执行以下操作(以便继续使用API并使代码能够在未来进行验证)。
from django.contrib.sessions.backends.cache import SessionStore
session = SessionStore(session_key)
session.delete()
这就是在Sessions middleware中完成的 此方法应该适用于后端,如果您决定将来移动到另一个后端,这可能是首选行为。
答案 1 :(得分:1)
mc = memcache.Client(settings.CACHE_BACKEND[:-1].split('//')[1].split(';'))
mc.delete(str(key))