我正在Django的会议上工作.
默认情况下,django在django_session中存储会话,我发现没有办法清除会话.
虽然clearsession可用于删除行.还建议将其作为cron作业运行.
但这样做意味着注销所有登录用户..正确吗?(我不确定)
这是正确的做法吗?
Ros*_*iya 10
Django 1.6 或以上
python manage.py clearsessions
Django 1.5 或更低版本
python manage.py cleanup
来自 Django Shell
from django.contrib.sessions.models import Session
Session.objects.all().delete()
Run Code Online (Sandbox Code Playgroud)
django-session-cleanup cronJob
注销时清除会话(基于请求中存在的会话密钥)
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()
Run Code Online (Sandbox Code Playgroud)
Django 文档说明(来自我的重点):
清除会话存储
当用户在您的网站上创建新会话时,会话数据可能会累积在您的会话存储中.如果您正在使用数据库后端,则
django_session数据库表将增长.如果您正在使用文件后端,则您的临时目录将包含越来越多的文件.要了解此问题,请考虑数据库后端会发生什么.当用户登录时,Django会在
django_session数据库表中添加一行.每次会话数据更改时,Django都会更新此行.如果用户手动注销,Django将删除该行.但是如果用户没有注销,则该行永远不会被删除.文件后端也会发生类似的过程.Django不提供自动清除过期的会话.因此,您的工作是定期清除过期的会话.Django为此提供了一个清理管理命令:
clearsessions.建议定期调用此命令,例如作为每日cron作业.请注意,缓存后端不容易受到此问题的影响,因为缓存会自动删除过时数据.Cookie后端也不是,因为会话数据是由用户的浏览器存储的.
在Abid A的答案中找到此链接.
clearsessions命令可以作为cron作业运行,也可以直接清除过期的会话.
所以它不会注销每个用户.
正如凯文克里斯托弗亨利在评论中提到的那样,以及e4c5标记的问题的其他可能副本.
| 归档时间: |
|
| 查看次数: |
8117 次 |
| 最近记录: |