默认使用django session的验证系统,使用时间长了,如果登陆数据库,执行下:select count(*) from django_session;,会发现,有很多过期的记录:
- mysql> select count(*) from django_session;
- +----------+
- | count(*) |
- +----------+
- | 155 |
- +----------+
- 1 row in set (0.00 sec)
如果select expire_date字段,可以看到这结时间,早已过期,但为什么程序里,已有在退出登陆时,清除了session,数据库里的记录还会有呢,这主要是:
清空 Session 表格
注意,Session 数据有可能堆积在数据库表格 django_session 中,Django 不提供 自动清除它们的功能。它把定期清空 Session 数据的任务留给了您。
要理解这个问题,想像一下用户使用 Session 时会发生什么。当用户登录,Django 向表格 django_session中添加一条记录。每当 Session 数据变化时,Django 会更新这条记录。如果用户手工退出了,Django 会删除它。但是,如果用户 没有 退出,则这条记录永远都不会被删除。
Django 提供了一个能够完成清除功能的样例脚本manage.py cleanup ,它从 Session 表格中删除那些 expire_date 已经过期的记录,但是您的应用程序可能会有其它的需求。
当执行了manage.py cleanup后,数据库中django_session就全清空了
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏