我正在Django中进行会话。Django:清除django_session表中的会话
默认情况下,django将会话存储在django_session中,我发现没有办法清除会话。
虽然clearsession可以用来删除行。还建议将其作为cron作业运行。
但这样做意味着注销所有登录用户..好吗? (不确定)
这是正确的做法吗?
我正在Django中进行会话。Django:清除django_session表中的会话
默认情况下,django将会话存储在django_session中,我发现没有办法清除会话。
虽然clearsession可以用来删除行。还建议将其作为cron作业运行。
但这样做意味着注销所有登录用户..好吗? (不确定)
这是正确的做法吗?
Django的documentation国家(重点从我):
清除会话存储
随着用户创建自己的网站新的会话,会话数据可以 累积在你的会话存储。如果您使用的是后端数据库 ,那么
django_session
数据库表将会增长。如果您使用 文件后端,您的临时目录将包含增加的文件数 。要理解此问题,请考虑数据库 后端会发生什么情况。当用户登录时,Django向数据库表添加一行。每次会话数据 更改时,Django都会更新此行。如果用户手动注销,则Django删除该行。但是如果 用户没有注销,该行永远不会被删除。类似的 过程发生在文件后端。
Django不提供自动清除过期会话。 因此,定期清理过期会话是您的工作。 Django为此提供了清理管理命令:
clearsessions
。建议以常规的 为基础调用此命令,例如每日cron作业。请注意,缓存后端不容易出现此问题,因为 缓存会自动删除陈旧的数据。 Cookie后端 也不是,因为会话数据是由用户的浏览器存储的。
找到链接Abid A's answer。
clearsessions
命令可以运行一个cron作业或直接清理过期会话。
因此它不会注销每个用户。
正如凯文克里斯托弗亨利在comment和其他possible duplicate您的问题flagged by e4c5所述。
Django的1.6以上
python manage.py clearsessions
Django的1.5或更低
python manage.py cleanup
从Django的壳牌
from django.contrib.sessions.models import Session
Django的会话清除在注销 cornJob
结算会议(基于会话密钥存在于请求)
Session.objects.all().delete()
from django.contrib.sessions.models import Session
session_key = request.data['sessionKey']
session = Session.objects.get(session_key=session_key)
Session.objects.filter(session_key=session).delete()
Session.objects.all().delete()
的可能的复制[Django的:会话数据库表清理](http://stackoverflow.com/questions/7296159/django-session-database-table-清理) –
不,'clearsessions'只会清除过期的会话。 –
[删除所有用户的会话密钥]可能重复(http://stackoverflow.com/questions/30864711/delete-session-key-from-all-users) – e4c5